2017-01-30 68 views
1

我试图实现Touch ID登录,但是当用户失败超过最大尝试次数时,我收到此错误“Error Domain = com.apple.LocalAuthentication Code = -8”生物特征被锁定。“UserInfo = {NSLocalizedDescription =生物统计学被锁定}”多少时间被锁定Touch ID? “生物识别被锁定。”

我想知道:

  • 多少时间,我在哪里可以检查它已被锁定触摸ID?
  • 是否可以在不显示密码的情况下强制解锁?
  • 如果用户通过密码尝试失败,锁定了多少次触摸ID,或者如何强制解锁它?

谢谢!

回答

3

触摸ID一旦被锁定,由于尝试不正确而被锁定,直到用户输入密码。所以没有固定的时间。解锁的唯一方法就是从这一点开始的密码,因为显而易见的原因,无法强制解锁。

+0

但是不知道锁定后等待解锁需要多长时间吗?我的意思是,当你用生物识别技术失败X次,然后用密码失败X次时,iPhone会锁定这两种方法,但我无法看到有多少次需要等待解锁。 –

+0

您不知道手机锁定的时间。绝对没有办法知道这些信息。其次,如果您试图在您的应用中确定这一点,那么您可能会以错误的方式解决问题。 – Tander

3

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

它运作良好。 –