在我的应用程序中,我尝试使用 Face ID 登录evaluatePolicy
,并且在 1 或 2 次登录后,我在回调中收到错误。在那个错误中,我调用了一个异步完成处理程序,该处理程序调用另一个并最终调用canEvaluatePolicy
. 然后我的应用程序冻结,不允许与 UI 进行进一步交互。为什么会发生这种情况?它与线程安全有关吗?可以在此处找到一些重现此问题的示例代码
以下是该示例代码的代码片段以供参考:
let localAuthenticationContext = LAContext()
if localAuthenticationContext.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: nil) {
localAuthenticationContext.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: "To access secure data") { success, evaluateError in
if success {
print("Success")
} else {
print("Face ID Error")
let context = LAContext()
let status = context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: nil)
print("Status: \(status)")
}
}
}
我一直在 iPhone X 模拟器上使用 Xcode 9.1 Beta 2。