葡京赌场网址iOS扫一扫功能开发


之前多次维码扫描都是基于zxing做的,但是zxing用起来真挺辛苦,又直接不更新。随着iOS6脱历史舞台,终于得以应用iOS7后,用系统的AVFoundation做的老二维码扫描器了。

 

初始化相机,扫描器

- (void)setupCamera
{
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    // 耗时的操作
        // Device
        _device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

        // Input
        _input = [AVCaptureDeviceInput deviceInputWithDevice:self.device error:nil];

        // Output
        _output = [[AVCaptureMetadataOutput alloc]init];
        //    [_output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
        [_output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];

        // Session
        _session = [[AVCaptureSession alloc]init];
        [_session setSessionPreset:AVCaptureSessionPresetHigh];
        if ([_session canAddInput:self.input])
        {
            [_session addInput:self.input];
        }

        if ([_session canAddOutput:self.output])
        {
            [_session addOutput:self.output];
        }

        // 条码类型 AVMetadataObjectTypeQRCode
        _output.metadataObjectTypes =@[AVMetadataObjectTypeQRCode];
        dispatch_async(dispatch_get_main_queue(), ^{
            // 更新界面
            // Preview
            _preview =[AVCaptureVideoPreviewLayer layerWithSession:self.session];
            _preview.videoGravity = AVLayerVideoGravityResizeAspectFill;
            //    _preview.frame =CGRectMake(20,110,280,280);
            _preview.frame = self.view.bounds;
            [self.view.layer insertSublayer:self.preview atIndex:0];
            // Start
            [_session startRunning];
        });
    });
}

1.      客户端检验:

在viewWillAppear和viewWillDisappear里对session做优化。

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    if (_session && ![_session isRunning]) {
        [_session startRunning];
    }
    timer = [NSTimer scheduledTimerWithTimeInterval:.02 target:self selector:@selector(animation1) userInfo:nil repeats:YES];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    [timer invalidate];
}

以上timer是个扫描动画的计时器,可以稍微过不看。

第一配置客户端检验,需要采取javascript脚本库,WebUIValidation.js。安装脚本库:aspnet_regiis –c,卸载脚本库:aspnet_regiis –e。

拍卖扫描的结果

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection
{

    NSString *stringValue;

    if ([metadataObjects count] >0)
    {
        AVMetadataMachineReadableCodeObject * metadataObject = [metadataObjects objectAtIndex:0];
        stringValue = metadataObject.stringValue;
    }

    [_session stopRunning];
    [timer invalidate];
    NSLog(@"%@",stringValue);

}

  禁用客户端检验:<%@page
ClientTarget=”DownLevel”>

故二维码扫描器扫自己的亚维码

NSString *url = [NSURL URLWithString:@"html/judgement.html" relativeToURL:[ZXApiClient sharedClient].baseURL].absoluteString;

    if ([stringValue hasPrefix:url]) {
        //如果扫出来的url是自己的域名开头的,那么做如下的处理。
    }

2.      验证必填—-RequriedFieleValidator:

于是二维码扫描器扫别人的次维码

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:stringValue]];

直利用openUrl系统自带的浏览器打开url就行,或者好写单放的浏览器打开。

IsValid:是否通过检,是-true,否-false;可以检查控件,也可检查页面。只有有证控件IsValid为true,page.IsValid才为true.

据此别人的扫描器扫自己之次维码

第一用团结的亚维码定义成http://www.xxx.com/xxxxx这般的祥和域名的url。
那第三正的亚维码扫出来后,会跨向者网址。

副在服务器上布置之页面,加入如下的代码

<script language="javascript">
  if (navigator.userAgent.match(/(iPhone|iPod|iPad);?/i)) {
    var loadDateTime = new Date();
    window.setTimeout(function() {
      var timeOutDateTime = new Date();
      if (timeOutDateTime - loadDateTime < 5000) {
        window.location = "要跳转的页面URL";
      } else {
        window.close();
      }
    },
    25);
    window.location = " test:// ";
  } else if (navigator.userAgent.match(/android/i)) {
    var state = null;
    try {
      state = window.open("apps custom url schemes ", '_blank');
    } catch(e) {}
    if (state) {
      window.close();
    } else {
      window.location = "要跳转的页面URL";
    }
  }
</script>

及时段代码是依据url schemes的法则,如果您的app里抱于斯url
schemes(例子里是test://),那么会立马打开这个url,如果无存在,就见面跨25毫秒,那么尽管针对任何一个页面,一般是产载页。

接着,在app的url schemes里设置,比如test

葡京赌场网址 1

Paste_Image.png

其一时候,浏览器发出test://的伸手的时,就能够立打开这app了。

末段,如果未饱吃扫描二维码只能打开app,想对二维码里之情做一些操作的话,可以:

  • 将二维码的内容定义成http://www.xxx.com/xxxxx?uid=xxx这么,当然后面的参数需要加密。
  • 当js代码里获取之参数,并原封不动的增大以url
    schemes后面,如test://uid=xxx
  • 在appDelegate里丰富如下代码。

    - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
    {
      if ([url.absoluteString hasPrefix:@"test://uid="]) {
          NSString *uid = [url.absoluteString substringFromIndex:11];
          NSLog(@"uid=%@",uid);
          //对uid进行操作
      } else {
          //其他的地方抛过来的url,比如微信
          return [WXApi handleOpenURL:url delegate:self];
      }
      return YES;
    }
    

InitialValue:控件初始值。与初始值比较:例如开始文本框显示“enter data”,为了检测是否输入了其他价值,则可以运用InitialValue=“enter data”,然后以波被以IsValid判断。

因此他人的扫描器扫别人的第二维码

葡京赌场网址 2

34ebbc5ccf91e9deffe7f8d1fead2675.png

3.      正则表达式验证:RegularExpressionValidator

终极来张效果图

葡京赌场网址 3

2015-04-08 09_52_30.gif

Text:错误提示;

ErrorMessage:ValidationSummary显示的错误信息。如果Text为空,则显得该属性值。

证明电子邮件:\S+@\S+\.\S{2,3}

证实口令和用户称:字母数字下划线限长度:\w{8,20}

网址:http//+\s+\.\s+

0-10单非空格字符:\s{0,10}

4. 比较值:CompareValidator

       可于单薄独控件或者控件与固定值。

       可看清项目:将operator设为DataTypeCheck,然后Type设为日期等档。

5.      自定义葡京赌场网址检验CustomerValidator

OnServerValidate添加自定义的查验事件;其中事件参数e包括IsValid和Value两独参数。

6.      禁用检验:

只要点击“cancel”按钮时,不思量实行检验,则好拿该空间的CauseValidation属性设为false。