美文网首页iOSiOSiOS程序农
iOS TouchID 认证(仅限设备支持指纹识别)

iOS TouchID 认证(仅限设备支持指纹识别)

作者: 会飞的大马猴 | 来源:发表于2017-01-03 16:13 被阅读70次

    iOS 8的SDK开放了Touch ID的接口.从WWDC的视频中可以看到Touch ID应用在两个方面:用于Key Chain加密和用于授权.iOS 8正式版发布以后我们可以看到Evernote的iOS app已经集成了该功能.下面来看看如何实现使用Touch ID进行身份认证.

    需要的类

    LAContext : 指纹验证操作对象

    没错!这一个类就够用了

    首先,我们要确保设备是否支持指纹识别,直接贴代码

    LAContext* context = [[LAContextalloc]init];
    //错误对象
    NSError* error =nil;
    //首先使用canEvaluatePolicy判断设备支持状态
    BOOL isSupport = [contextcanEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometricserror:&error]
    
    NSString*alertName =@"提示信息";
    if (isSupport) {
            //支持指纹验证
            [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:alertName reply:^(BOOL success, NSError *error) {
                if (success) {
                    //验证成功,主线程处理UI
                    dispatch_queue_t mainQueue = dispatch_get_main_queue();
                    dispatch_sync(mainQueue, ^{
                        self.label.text = @"验证成功";
                    });
                }
                else
                {
                    NSLog(@"%@",error.localizedDescription);
                    switch (error.code) {
                        case LAErrorSystemCancel:
                        {
                            NSLog(@"Authentication was cancelled by the system");
                            //切换到其他APP,系统取消验证Touch ID
                            break;
                        }
                        case LAErrorUserCancel:
                        {
                            NSLog(@"Authentication was cancelled by the user");
                            //用户取消验证Touch ID
                            break;
                        }
                        case LAErrorUserFallback:
                        {
                            NSLog(@"User selected to enter custom password");
                            [[NSOperationQueue mainQueue] addOperationWithBlock:^{
                                //用户选择输入密码,切换主线程处理
                            }];
                            break;
                        }
                        default:
                        {
                            [[NSOperationQueue mainQueue] addOperationWithBlock:^{
                                //其他情况,切换主线程处理
                            }];
                            break;
                        }
                    }
                }
            }];
        }
        else
        {
            //不支持指纹识别,LOG出错误详情
            
            switch (error.code) {
                case LAErrorTouchIDNotEnrolled:
                {
                    NSLog(@"TouchID is not enrolled");
                    break;
                }
                case LAErrorPasscodeNotSet:
                {
                    NSLog(@"A passcode has not been set");
                    break;
                }
                default:
                {
                    NSLog(@"TouchID not available");
                    break;
                }
            }
            
            NSLog(@"%@",error.localizedDescription);
        }```
    #总结
    
    其实手势识别很简单,总体来说 只要一个类,一句代码,不过需要我们判断的状态有那么几种,我在代码中已经注释了。

    相关文章

      网友评论

      本文标题:iOS TouchID 认证(仅限设备支持指纹识别)

      本文链接:https://www.haomeiwen.com/subject/niknvttx.html