【问题标题】:touchID implementation error cancelled by user用户取消了 touchID 实现错误
【发布时间】:2020-01-18 14:44:50
【问题描述】:

如何解决 TouchId 错误:Domain=com.apple.LocalAuthentication Code=-2 "Canceled by user."

我再次尝试添加本地上下文:

let myContext = LAContext()
let myLocalizedReasonString = "Please use your last login for Inspyrus Supplier Central."        

var authError: NSError?
if #available(iOS 8.0, macOS 10.12.1, *) {
    if myContext.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &authError) {
        myContext.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: myLocalizedReasonString) { success, evaluateError in
            DispatchQueue.main.async {
                if success {
                    self.btnLoginClicked(UIButton())
                } else {
                    print(evaluateError?.localizedDescription ?? "Failed to authenticate")
                    // Fall back to a asking for username and password.
                    // ...
                }
            }
        }
    }
}

【问题讨论】:

    标签: ios swift biometrics touch-id localauthentication


    【解决方案1】:

    您可以检查从evaluatePolicy 调用返回的evaluateError 是否为LAError.userCancel

    类似这样的:

    if success {
        //...
    }
    else if let authError = evaluateError as? LAError {
        switch authError.code {
        case .userCancel:
            // Authentication was canceled by user (e.g. tapped Cancel button).
            break
        default:
            // Other error
            break
        }
    
        // Or
        switch authError {
        case LAError.userCancel:
            // Authentication was canceled by user (e.g. tapped Cancel button).
            break
        default:
            // Other error
            break
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-12-21
      • 2014-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多