Touch ID

Touch ID简单介绍

iOS系统的指纹识别功能最低支持的机型为iPhone 5s,最低支持系统为 iOS 8,虽然安装iOS 7系统的5s机型可以使用系统提供的指纹解锁功能,但由于API并未开放,所以理论上第三方软件不可使用。

Touch ID的使用

- 依赖框架

LocalAuthentication.framework

- 使用类

LAContext 指纹验证操作对象

操作流程

导入#import

- 代码实现

- (IBAction)openTouchID:(id)sender {
        LAContext *context = [[LAContext alloc] init]
        NSError *conError = nil;
    //判断系统版本
    if ([UIDevice currentDevice].systemVersion.doubleValue >= 8.0)
    {
       
        //  iOS9后使用TouchID时候,最好选择LAPolicyDeviceOwnerAuthentication枚举:它在指纹验证失败后,可以继续手动输入密码来设置,
            iOS8时使用的是LAPolicyDeviceOwnerAuthenticationWithBiometrics
        if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthentication error:&conError]) {
            [context evaluatePolicy:LAPolicyDeviceOwnerAuthentication
                localizedReason:@"使用指纹验证"
                          reply:^(BOOL success, NSError * _Nullable error) {
                              if (success) {
                                  NSLog(@"success");
                                  // 继续执行相应的逻辑
                              }else
                              {
                                  error.code;
                                  NSLog(@"error = %@", error.localizedDescription);
                                  
                              }
                          }];
        }else
        {
            //不支持指纹识别
            error.code;
            NSLog(@"conError= %@", conError.localizedDescription);
        }
        /*
         error.code错误处理的枚举
         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);
         
         */
    }
}

你可能感兴趣的:(Touch ID)