Touch ID指纹解锁使用

时间:2023-03-09 07:48:52
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);