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

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);
    }```
#总结

其实手势识别很简单,总体来说 只要一个类,一句代码,不过需要我们判断的状态有那么几种,我在代码中已经注释了。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 最近各种事情特别多,整个人都觉得很累。但是每天晚上都还是调着闹钟起来签到。以前那种懒散的态度因为我是班长四个字全都...
    邓涵宜阅读 3,541评论 0 0
  • 因为胆小没自信,怕不会做怕出丑,很多事都不敢去尝试。现在逐渐去挑战自己不可能的事。 上午要接电脑网线,原来...
    一米_HZ阅读 1,652评论 0 0
  • 高叉泳装魔王阅读 1,243评论 0 0

友情链接更多精彩内容