iOS指纹解锁

来源:互联网 发布:js实现旋转 编辑:程序博客网 时间:2024/04/30 21:50

转载自:http://blog.csdn.net/hongfengkt/article/details/49868073
在iOS8.0之后,API开放了指纹验证的功能。
指纹验证功能的最低硬件支持为iPhone5s,iPad 6,iPad mini 3这些有touch ID硬件支持的设备,并且操作系统最低为iOS8.0,因为touch ID是在iOS8.0之后才开放的一类api。

———-做iOS8.0下版本适配时,务必进行API验证,避免调用相关API引起崩溃。

引入框架:#import

- (void)authenticateUser{    //初始化上下文对象    LAContext *context = [[LAContext alloc]init];    NSError *error = nil;    NSString *result = @"Authentication is needed to access your notes.";    //首先使用canEvaluatePolocy判断设备支持状态    if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {        //支持指纹验证        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:result reply:^(BOOL success, NSError * _Nullable error) {            if (success) {                //验证成功,主线程处理UI                NSLog(@"指纹验证成功");            }            else            {                NSLog(@"指纹验证失败=====%@",error.localizedDescription);                switch (error.code) {                    case LAErrorSystemCancel:                        //切换到其他APP,系统取消验证Touch ID                        break;                    case LAErrorUserCancel:                        //用户取消验证Touch ID                        break;                    case LAErrorUserFallback:                    {                       [[NSOperationQueue mainQueue]addOperationWithBlock:^{                           //用户选择其他验证方式,切换到主线程处理UI                       }];                        break;                    }                    default:                    {                        [[NSOperationQueue mainQueue] addOperationWithBlock:^{                            //其他情况,切换主线程处理                        }];                    }                        break;                }            }        }];    }    else    {        //不支持指纹识别,LOG出错误详情        switch (error.code) {            case LAErrorTouchIDNotEnrolled:                //未录入Touch ID                break;            case LAErrorPasscodeNotSet:                //未设置Touch ID                break;            default:                //Touch ID不可用                break;        }        NSLog(@"%@",error.localizedDescription);    }}

有以下几种情况

typedef NS_ENUM(NSInteger, LAError){    //授权失败    LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed,    //用户取消Touch ID授权    LAErrorUserCancel           = kLAErrorUserCancel,    //用户选择输入密码    LAErrorUserFallback         = kLAErrorUserFallback,    //系统取消授权(例如其他APP切入)    LAErrorSystemCancel         = kLAErrorSystemCancel,    //系统未设置密码    LAErrorPasscodeNotSet       = kLAErrorPasscodeNotSet,    //设备Touch ID不可用,例如未打开    LAErrorTouchIDNotAvailable  = kLAErrorTouchIDNotAvailable,    //设备Touch ID不可用,用户未录入    LAErrorTouchIDNotEnrolled   = kLAErrorTouchIDNotEnrolled,} NS_ENUM_AVAILABLE(10_10, 8_0);
0 0
原创粉丝点击