我在 iOS 9 和 iOS 10 上尝试使用 LocalAuthentication。并注意到以下行为差异。在 iOS 9 中,如果我执行下面显示的代码,并通过使用错误的手指进行身份验证导致 touchID 被锁定,调用 context.canEvaluatePolicy 即使在 Touch ID 被锁定后也会返回 true,然后调用 context .evaluatePolicy 使设备提示我输入设备密码。
在 iOS 10 中,如果我锁定 TouchID,canEvaluatePolicy 返回 false,错误是有一个指示 TouchIDLockout 的代码。
TouchIDLockout 是在 iOS 9 中引入的,所以我希望在 iOS 9 中获得该错误代码,但目前还没有。有没有其他人遇到过这种情况?
@IBAction func test(_ sender : UIButton) {
let context = LAContext()
var error : NSError? = nil
if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) {
context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: "Boom", reply: { (success, error) in
let code = (error as? LAError)?.code.rawValue
sender.setTitle(String(code ?? 2), for: .normal)
})
}
}
}
最佳答案
在 Apple Dev Forums 上查了一下,这是 iOS 9 中的一个错误,已在 iOS 10 中修复。
关于ios - 当 TouchID 在 iOS 9 上被锁定时,LAContext.canEvaluatePolicy 返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42016670/