码迷,mamicode.com
首页 > 移动开发 > 详细

iOS 指纹识别

时间:2017-02-27 13:12:33      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:ace   上下   touch   点击   error   nsset   round   技术   can   

今天做项目用到指纹识别,但是单指纹识别技术实现起来并不复杂,但是验证成功之后需要刷新UI这里我就跳进了一个坑了??????.因为指纹验证也是在子线程进行的

要么是等待很长时间,要么就是报乱七八糟的错误,看的我也是醉了

 

#import "ViewController.h"

 

//本地验证框架,用于指纹识别(iOS8出现)

#import <LocalAuthentication/LocalAuthentication.h>

 

@interface ViewController ()

 

@end

 

@implementation ViewController

 

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

}

 

 

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

    

    //判断指纹解锁是否可用,没有API, 使用can来判断(与相机的输入输出设备一致)

    

    //1.创建认证上下文

    LAContext *context = [[LAContext alloc] init];

    

    //2.判断设备能够识别

    /**

     Policy(政策)Device(设备)Owner(拥有者):设备拥有者

     Authentication:认证

     Biometics:生物识别及时(指纹解锁, 刷脸识别, 虹膜识别)

     */

    //LAPolicyDeviceOwnerAuthenticationWithBiometrics

    //LAPolicyDeviceOwnerAuthentication //iOS9类型(与iOS8的区别就是多次点击错误之后,点击输入密码会弹出密码页面,iOS8不会)

    if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthentication error:nil]) {

        

        //开始验证  LAPolicyDeviceOwnerAuthentication这个枚举值,需要和上面验证设备是否可以用的写一致.

        [context evaluatePolicy:LAPolicyDeviceOwnerAuthentication localizedReason:@"弹出指纹验证的描述" reply:^(BOOL success, NSError * _Nullable error) {

            

            if (success) {                

                //code 返回0代表认证成功

                NSLog(@"认证成功 -->%zd",error.code);

            } else {

                //实际开发中需要用户对code类型做不同业务逻辑处理

                /**

                 -2:用户主动点击取消

                 -1:三次识别错误

                 -8:三次识别错误之后继续识别错误两次(这时候会弹出密码框)

                  0:认证成功

                 */

                NSLog(@"%zd",error.code);

                

                //特别需要注意的是:指纹识别也是在子线程中的,刷新UI需要回到子线程

                //否则要么等待很长时间,要么会报一些奇怪的错误, 我就是栽倒在这里了??

                dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

                    

                    self.view.backgroundColor = [UIColor greenColor];

                });

                

            }

        }];

    } else {

        NSLog(@"设备不支持");

    }

    

}

iOS 指纹识别

标签:ace   上下   touch   点击   error   nsset   round   技术   can   

原文地址:http://www.cnblogs.com/quxiangfu/p/6473075.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!