你的位置:首页 > 操作系统

[操作系统]Touch ID指纹解锁使用


Touch ID是iPhone5S后加入的一项新的功能,也就是大家熟知的指纹识别技术。大家用得最多的可能是手机的解屏操作,不用在和以前一样输入手机的四位数密码进行验证。一方面不用担心密码被别人看到,另一方面也方便了自己的操作。iOS8后苹果开放了Touch ID的API给开发者,这也给我们的app带来了新的体验。

使用

Touch ID的API非常的简单也好理解,在使用前我们需要导入LocalAuthentication这个库。并引入关键模块:LAcontext

苹果公司并没有对Touch ID完全开放,只是开放了如下所的两个接口

(1) canEvaluatePolicy:error: 判读是否能够认证Touch ID

(2) evaluatePolicy:localizedReson:reply: 认证Touch ID

关键代码如下

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

  NSError * authError = nil;

  NSString * myLocatizedReasonString = @"请扫描你的指纹.";

    if ([myContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&authError]) {

        [myContext evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:myLocatizedReasonString reply:^(BOOL success, NSError * _Nullable error) {

            if (success) {

                dispatch_async (dispatch_get_main_queue(), ^{

                    //在主线程更新 UI,不然会卡主

                     TouchViewController * touchVC = [[TouchViewController alloc]init];

                     [self.navigationController pushViewController:touchVC animated:YES];

                });

            }

            if (!success) {

                NSLog(@"%@",error);

            }

        }];

    }

错误处理

typedef NS_ENUM(NSInteger, LAError)

{

    //用户验证没有通过,比如提供了错误的手指的指纹

    LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed,

    // 用户取消了Touch ID验证

    LAErrorUserCancel  = kLAErrorUserCancel,

    //用户不想进行Touch ID验证,想进行输入密码操作

    LAErrorUserFallback  = kLAErrorUserFallback,

     // 系统终止了验证

    LAErrorSystemCancel = kLAErrorSystemCancel,

     // 用户没有在设备Settings中设定密码

    LAErrorPasscodeNotSet = kLAErrorPasscodeNotSet,

    // 设备不支持Touch ID

    LAErrorTouchIDNotAvailable  = kLAErrorTouchIDNotAvailable,

// 设备没有进行Touch ID 指纹注册

    LAErrorTouchIDNotEnrolled   = kLAErrorTouchIDNotEnrolled,

} NS_ENUM_AVAILABLE(10_10, 8_0);