我想使用TouchID验证我的应用,验证成功运行。如果TouchID不匹配,则会打开“再试一次”警报,并在该警报中输入“密码”选项。如果用户选择该选项,则应显示系统密码验证,但我该怎么办呢?
在这里分享我的代码:
func touchIDAuthentication() {
let context = LAContext() //1
var error:NSError?
guard context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) else {
showAlertViewIfNoBiometricSensorHasBeenDetected()
return
}
if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &errorPointer) {
context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: reason, reply: { (success, error) in
if success {
DispatchQueue.main.async {
print("Authentication was successful")
}
}else {
DispatchQueue.main.async {
self.displayErrorMessage(error: error as! LAError )
print("Authentication was error")
}
}
})
}else {
self.showAlertWith(title: "Error", message: (errorPointer?.localizedDescription)!)
}
}
func displayErrorMessage(error:LAError) {
var message = ""
switch error.code {
case LAError.authenticationFailed:
message = "Authentication Failed."
break
case LAError.userCancel:
message = "User Cancelled."
break
case LAError.userFallback:
message = "Fallback authentication mechanism selected."
break
case LAError.touchIDNotEnrolled:
message = "Touch ID is not enrolled."
case LAError.passcodeNotSet:
message = "Passcode is not set on the device."
break
case LAError.systemCancel:
message = "System Cancelled."
break
default:
message = error.localizedDescription
}
self.showAlertWith(title: "Authentication Failed", message: message)
}
如果输入移动到我的应用中的密码,如何显示此屏幕。如何实现这一点帮助我。谢谢你。
答案 0 :(得分:9)
将LAPolicy
政策枚举值deviceOwnerAuthenticationWithBiometrics
替换为deviceOwnerAuthentication
注意:如果用户已启用
biometric
(面部识别码或触摸识别码)身份验证,则设备将首先询问生物识别身份验证,如果用户选择后退身份验证,则仅{{ 1}}将显示密码屏幕。
试试这个,看看:
deviceOwnerAuthentication
答案 1 :(得分:8)
如果您使用策略.deviceOwnerAuthentication
,则会立即显示“输入密码”选项。
如果您按原样使用.deviceOwnerAuthenticationWithBiometrics
,则只有在第一次不成功的生物识别身份验证尝试后才会显示“输入密码”选项。
无论用户如何进行身份验证,都会调用完成闭包。