触摸ID:锁定生物测量。代码= -8

时间:2016-10-24 07:16:39

标签: ios objective-c touch-id lacontext

我使用Touch ID识别我的应用中的iPhone用户,何时使用canEvaluatePolicy: LAPolicyDeviceOwnerAuthenticationWithBiometrics评估用户是否有资格使用Touch ID,但是在尝试多次失败后即使用户有资格使用触摸ID ,它返回FALSE

这将导致应用跳过此步骤,并认为此设备不支持触控ID。

以下是我得到的错误:

  

错误Domain = com.apple.LocalAuthentication Code = -8“生物测定被锁定   out。“UserInfo = {NSLocalizedDescription = Biometry被锁定。}

2 个答案:

答案 0 :(得分:11)

好的,我认为我找到了答案。希望它会对你有所帮助。当你得到

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之前,这是由操作系统自动完成的。

答案 1 :(得分:1)

您可以通过使用密码验证用户身份来解锁生物特征识别。只需将此功能粘贴到您的项目中并在使用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
}