ios - 用户取消了 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.
// ...
}
}
}
}
}
解决方案
您可以检查调用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
}
}
推荐阅读
- python - 虚拟变量的数据类型
- performance - JMeter Slave 和 Master 可以在不同的平台上吗?
- javascript - 我应该如何渲染获取 API 的多状态组件?
- html - 页眉和页脚之间的视频
- excel - 在excel中将值从相邻单元格自动复制到非相邻单元格
- php - 如何在laravel中自动为表格中的每一行编号?
- android-layout - android:layout_width="0dp" 不适用于片段中的 ScrollView
- python-3.x - Anaconda 和升级到新的 M1 Mac
- c# - 在 C# windows 窗体中克隆按钮的语法是什么?
- vb.net - 在我的 Wix 网站上使用 API 接收时发生意外错误