Ошибка реализации touchID отменена пользователем

Как устранить ошибку 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.
                    // ...
                }
            }
        }
    }
}

person chimerla preethi reddy    schedule 17.09.2019    source источник


Ответы (1)


Вы можете проверить, является ли evaluateError, возвращаемое вызовом evaluatePolicy, 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
    }
}
person ricardopereira    schedule 15.10.2019