标签:
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);
标签:
原文地址:http://www.cnblogs.com/shujincai/p/5778679.html