我正在尝试在我的应用上实施Touch ID身份验证,如果失败(或不可用),我希望重新使用密码。
这是我的代码:
LAContext *ctx = [[LAContext alloc] init];
[ctx evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"Authenticate to access." reply:^(BOOL success, NSError *error) {
if(success){
[...]
}else if(error.code != LAErrorUserFallback){
[...] //error handler
}
}];
当我使用Touch ID进行身份验证时,会调用成功。当我在3次触摸后无法进行身份验证时,将调用错误处理程序。这里没问题。但是当我点击输入密码时,它应该显示输入密码屏幕,但没有任何反应。如何显示输入密码屏幕?
答案 0 :(得分:2)
您应该使用 LAPolicyDeviceOwnerAuthentication 代替 LAPolicyDeviceOwnerAuthenticationWithBiometrics 同时使用LAContext`s Method
evaluatePolicy: localizedReason:kReasonTitle: 回复
和
canEvaluatePolicy: 错误:
<强> LAPolicyDeviceOwnerAuthentication:强>
如果Touch ID可用,已注册但未锁定,则会先要求用户输入,否则会要求他们输入设备密码这将显示输入密码屏幕。
答案 1 :(得分:1)
首先,您应该通过调用LAContext's [canEvaluatePolicy:error:]
方法检查TouchID是否可用,如果TouchID不可用,则会返回NO
。
LAErrorUserFallback适用于您的应用程序自己的密码(身份验证)方案,而非设备。 More information can be found here in this related question
答案 2 :(得分:1)
使用LAPolicyDeviceOwnerAuthentication
代替LAPolicyDeviceOwnerAuthenticationWithBiometrics
。
如果可用,它将首先提示Touch ID并将其注册到设备。如果您错误地使用了Touch ID 3次,则输入密码&#34;输入密码&#34;按钮将显示。点击该按钮后,将显示设备密码屏幕。