import LocalAuthentication
context.canEvaluatePolicy(.deviceOwnerAuthentication, error: nil)
var error: NSError?
if context.canEvaluatePolicy(.deviceOwnerAuthentication, error: &error) {
let reason = "Log in to your account"
context.evaluatePolicy(.deviceOwnerAuthentication, localizedReason: reason ) { success, error in
if success {
// Move to the main thread because a state update triggers UI changes.
DispatchQueue.main.async { [unowned self] in
self.state = .loggedin
}
} else {
print(error?.localizedDescription ?? "Failed to authenticate")
// Fall back to a asking for username and password.
// ...
}
}
} else {
print(error?.localizedDescription ?? "Can't evaluate policy")
// Fall back to a asking for username and password.
// ...
}
func authFail(err: Error?) {
if let c = err as NSError?{
let cc = LocalAuthentication.LAError.Code.init(rawValue: c.code)
switch(cc) {
case LocalAuthentication.LAError.systemCancel:
print("系统取消授权,如其他APP切入");
break;
case LocalAuthentication.LAError.userCancel:
print("用户取消验证Touch ID");
break;
case LocalAuthentication.LAError.authenticationFailed:
print("授权失败");
break;
case LocalAuthentication.LAError.passcodeNotSet:
print("系统未设置密码");
break;
case LocalAuthentication.LAError.biometryNotAvailable:
print("设备Touch ID不可用,例如未打开");
break;
case LocalAuthentication.LAError.biometryNotEnrolled:
print("设备Touch ID不可用,用户未录入");
break;
case LocalAuthentication.LAError.userFallback:
print("用户选择输入密码,切换主线程处理");
break;
default:
print("其他情况,切换主线程处理");
break;
}
}
}
https://download.csdn.net/download/wangkunggxx/87391697
原文地址:https://blog.csdn.net/wangkunggxx/article/details/128729057
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_24254.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!