Face ID userFallback在iOS swift中不工作
我在iOS应用程序中安装了一个人脸识别码。当身份验证失败时,将显示包含“取消”和“重试”按钮的警报,“取消”按钮起作用,但“重试”按钮不起作用。如何编辑此按钮或“重试”按钮。当我单击“重试”按钮时,如果我单击“取消”按钮,则不会发生任何事情。该按钮正在工作,甚至“取消”按钮的标题也在更改,但没有对“重试”应用任何操作。我尝试了以下代码,并在internet上进行了大量搜索,但未找到任何内容。Face ID userFallback在iOS swift中不工作,ios,swift,fallback,face-id,Ios,Swift,Fallback,Face Id,我在iOS应用程序中安装了一个人脸识别码。当身份验证失败时,将显示包含“取消”和“重试”按钮的警报,“取消”按钮起作用,但“重试”按钮不起作用。如何编辑此按钮或“重试”按钮。当我单击“重试”按钮时,如果我单击“取消”按钮,则不会发生任何事情。该按钮正在工作,甚至“取消”按钮的标题也在更改,但没有对“重试”应用任何操作。我尝试了以下代码,并在internet上进行了大量搜索,但未找到任何内容。 尝试此代码是否可以将屏幕截图设置为警报?是的,请参阅更新的POST没有设备,但我在模拟器中测试。是的,
尝试此代码是否可以将屏幕截图设置为警报?是的,请参阅更新的POST没有设备,但我在模拟器中测试。是的,你是对的,ios肯定有一些bug,但如果你再次扫描人脸,如果匹配,对话将自动关闭。是的,我认为这是ios端的bug
func startFaceIDTest(){
attempted = true
if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) {
let reason = "Identify yourself!"
context.evaluatePolicy(LAPolicy.deviceOwnerAuthenticationWithBiometrics, localizedReason: reason, reply: {
successfaceID, authenticationError in
DispatchQueue.main.async {
if successfaceID {
self.success = true
} else {
self.success = false
guard let errorr = authenticationError else {return}
switch(errorr) {
case LAError.authenticationFailed:
print("Failed")
break
case LAError.userCancel:
print("User cancel")
break
case LAError.userFallback:
print("Fallback")
break
case LAError.systemCancel:
print("System cancel")
break
default:
break
}
}
}
})
} else {
if let err = error {
if #available(iOS 11.0, *) {
self.success = false
switch err.code {
case LAError.Code.biometryNotEnrolled.rawValue:
notifyUser("Your device not enrolled for biometric",
err: err.localizedDescription)
case LAError.Code.passcodeNotSet.rawValue:
notifyUser("A passcode has not been set",
err: err.localizedDescription)
case LAError.Code.biometryNotAvailable.rawValue:
notifyUser("Biometric authentication not available",
err: err.localizedDescription)
default:
notifyUser("Unknown error",
err: err.localizedDescription)
}
} else {
// Fallback on earlier versions
}
}
}
}
func notifyUser(_ msg: String, err: String?) {
let alert = UIAlertController(title: msg, message: err, preferredStyle: .alert)
let cancelAction = UIAlertAction(title: "OK", style: .cancel, handler: nil)
alert.addAction(cancelAction)
self.present(alert, animated: true, completion: nil)
}
func bioandpasscodeAuthentication() {
let context = LAContext()
var error:NSError?
// edit line - deviceOwnerAuthentication
guard context.canEvaluatePolicy(.deviceOwnerAuthentication, error: &error) else {
//showAlertViewIfNoBiometricSensorHasBeenDetected()
return
}
let reason = "Identify yourself!"
// edit line - deviceOwnerAuthentication
if context.canEvaluatePolicy(.deviceOwnerAuthentication, error: &error) {
// edit line - deviceOwnerAuthentication
context.evaluatePolicy(.deviceOwnerAuthentication, 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)!)
}
}