最近工作中遇到了一个问题,关于TouchId多次认证失败后,不能弹出系统输入密码的窗口。关于指纹识别的文章有很多,比如iOS Touch ID指纹识别(支付) - 简书。在iOS10之前,如上述的处理,在指纹密码6次(先4次,再2次)认证失败以后,就会自动调用出系统的输入密码框。但是,在iOS10中,当多次认证失败以后,如果只是简单的判断,就不能再调用出系统的输入密码框。
这个问题主要体现在,在6次认证失败以后,TouchId会被锁定,返回的error中是Error Domain=com.apple.LocalAuthentication Code=-8"Biometry is locked out."UserInfo={NSLocalizedDescription=Biometry is locked out。此时,如果想再次点击指纹时弹出系统的输入密码框,需要再多做一步操作,如下:
##代码实现
```
dispatch_async(dispatch_get_main_queue(), ^{
LAContext*myContext=[[LAContextalloc] init];
NSError*error=nil;
if([myContextcanEvaluatePolicy:LAPolicyDeviceOwnerAuthentication error:&error]) {
[myContextevaluatePolicy:LAPolicyDeviceOwnerAuthentication localizedReason:MYLOCALIZEDREASON reply:^(BOOLsuccess, NSError*_Nullable error) {
NSLog(@"产看原因%@", error);
}];
}
if(successBlock) {
successBlock(NO,error.code);
}
});
```
这样系统就会弹出密码输入框。初次写文章,如有不对之处,还请指正。
网友评论