如何在iOS 8上Touch ID失败时回退到密码验证?

时间:2015-07-14 07:46:26

标签: ios authentication ios8 touch-id

我正在尝试在我的应用上实施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次触摸后无法进行身份验证时,将调用错误处理程序。这里没问题。但是当我点击输入密码时,它应该显示输入密码屏幕,但没有任何反应。如何显示输入密码屏幕?

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;按钮将显示。点击该按钮后,将显示设备密码屏幕。