触摸ID:生物识别被锁定.代码= 8



我使用Touch id来识别我的应用程序中的iPhone用户,当我使用canEvaluatePolicy: LAPolicyDeviceOwnerAuthenticationWithBiometrics来评估用户是否有资格使用Touch id时,但是经过多次失败的尝试,即使用户有资格使用Touch id,它返回FALSE

这会导致应用跳过这一步并认为touch id在这个设备中不被支持

下面是我得到的错误:

= com.apple误差域。LocalAuthentication Code=-8 " biometric被锁定"。UserInfo={NSLocalizedDescription= biometric is locked out}

好了,我想我找到答案了。希望能对你有所帮助。当你得到

Error Domain=com.apple.LocalAuthentication Code=-8 "Biometry is locked out." UserInfo={NSLocalizedDescription=Biometry is locked out.}

iOS 10阻止访问TouchID,它可以通过在iOS解锁屏幕上提供密码来解锁,访问TouchID iOS设置并提供密码,或者从应用程序内手动触发密码屏幕。你可以使用以下代码片段打开密码屏幕。

let context = LAContext()
context.evaluatePolicy(LAPolicy.DeviceOwnerAuthentication,
                           localizedReason: reason,
                           reply: { (success, error) in
})

当然你可以先检查一下这个策略是否可以评估。

所以最终,当用户成功输入密码时,生物识别将被解锁。在iOS 10之前,这是由操作系统自动完成的。

您可以通过使用密码验证用户身份来解锁生物识别。只需将此函数粘贴到您的项目中,并在使用Touch ID验证用户之前调用此函数。

如果它返回true,运行Touch ID认证,如果由于生物识别锁定而失败,它将要求用户输入iPhone密码解锁生物识别。这将在应用程序内发生。

func isBiometryReady() -> Bool
{
        let context : LAContext = LAContext();
                var error : NSError?
            context.localizedFallbackTitle = ""
            context.localizedCancelTitle = "Enter Using Passcode"
            if (context.canEvaluatePolicy(LAPolicy.deviceOwnerAuthenticationWithBiometrics, error: &error))
            {
                    return true
            }
            if error?.code == -8
            {
                let reason:String = "TouchID has been locked out due to few fail attemp. Enter iPhone passcode to enable TouchID.";
                context.evaluatePolicy(LAPolicy.deviceOwnerAuthentication,
                                       localizedReason: reason,
                                       reply: { (success, error) in
                                        return false
                })
                return true

            }
    return false
}

相关内容

  • 没有找到相关文章

最新更新