我在许多地方描述了LocalAuthentication的以下实现。TouchID activateTouchWithResponse在不请求指纹的情况下返回成功
context.evaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, localizedReason: "Logging in with Touch ID", reply: { (success : Bool, error : NSError?) -> Void in
dispatch_async(dispatch_get_main_queue(), {
if success {
let alert = UIAlertController(title: "Success", message: "", cancelButtonTitle: "Great!")
self.presentViewController(alert, animated: true, completion: nil)
}
if let error = error {
var message :String
switch(error.code) {
case LAError..AuthenticationFailed:
message = "There was a problem verifying your identity."
case LAError..UserCancel:
message = "You pressed cancel."
case LAError..UserFallback:
message = "You pressed password."
default:
message = "Touch ID may not be configured"
}
let alert = UIAlertController(title: "Error", message: message, cancelButtonTitle: "Darn!")
self.presentViewController(alert, animated: true, completion: nil)
}
})
})
但之后我已经成功地与我的指纹验证,然后evaluatePolicy(,localizedReason :,答复:)返回成功,而不要求任何指纹。 我实际上使用UISwitch启用或禁用TouchID,因此在禁用并重新启用后,我想重新进行身份验证并重新输入指纹。
为什么它缓存身份验证?
谢谢
添加错误,如果看到会发生什么。 – Konsy
错误为零。我第二次评估该政策时,我得到的成功和错误为零,没有被提示触摸按钮。 –
尝试做,如果错误!=零而不是 – Konsy