一、指纹识别
1、指纹识别介绍
iPhone 5S 开始有了指纹识别功能
ios8.0开始,苹果开放了指纹识别的验证接口:LocalAuthentication
2、调用机制
连续给3次机会,3次以后,会提示剩余2次机会、密码登录、取消指纹验证
5次输入错误,指纹识别弹框消失
第2次调用指纹识别,如上逻辑,若还未验证通过,需要锁屏启用指纹识别
3、贴上代码
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
//1、判断系统版本
if ([UIDevice currentDevice].systemVersion.floatValue >= 8.0) {
// 可以使用指纹识别 -> 5s以后机型
//2、判断机型是否支持指纹识别
//2.1、创建LA对象上下文
LAContext *context = [[LAContext alloc] init];
//2.2、判断能否使用
/**
@param LAPolicy 评估
@return 策略
*/
if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:nil]) {
//可以使用
//3、开启使用指纹识别
/**
@param LAPolicy 可以使用指纹识别策略
@param localizedReason 提示用户的信息
*/
[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"请把你的鸡爪放在home键上验证指纹" reply:^(BOOL success, NSError * _Nullable error) {
//判断是否成功
if (success) {
NSLog(@"验证成功");
dispatch_sync(dispatch_get_main_queue(), ^{
//在主线程中更新UI
});
} else {
NSLog(@"验证失败");
}
if (error) {
switch (error.code) {
case -1:
NSLog(@"超出验证次数限制,提示锁屏,重新验证!");
break;
case -2:
NSLog(@"用户点击了取消指纹验证");
break;
case -3:
NSLog(@"点击了密码登录");
break;
case -8:
NSLog(@"锁屏功能被锁定,请锁屏手机,密码登录启用指纹识别!");
break;
default:
break;
}
}
}];
} else {
NSLog(@"对不起,5s以上机型才可以使用该功能");
}
} else {
NSLog(@"系统版本过低,无法使用指纹识别!");
}
}