我想在我的应用程序中测试 faceId/touchId 机制。我有以下内容:
func auth(){
let context = LAContext()
var error: NSError?
if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) {
var reason: String = Strings.Common.unknownBiometryTip.value
if BiometricService.biometricType() == .touchID {
reason = Strings.Common.touchIDEnterTip.value
}
if BiometricService.biometricType() == .faceID {
reason = Strings.Common.faceIDEnterTip.value
}
context.evaluatePolicy(LAPolicy.deviceOwnerAuthentication, localizedReason: reason) { [weak self] (success, error) in
print("error \(error)")
if let error = error as? LAError, error.errorCode == Int(kLAErrorUserCancel) {
self?.cancelTapped?()
return
}
if success {
self?.authSucceed?()
}
else {
self?.authFailure?()
}
}
}
else {
print("Touch ID neither Face ID not available")
}
}
我实际上无法测试authFailure
块,因为当我在 XCode 中点击“不匹配的脸”按钮时,它会显示 pin 条目视图,并且看起来像我输入的任何内容都被处理为“正确”。
我实际上想要在用户尝试“错误”的 face/touchId/pin 输入尝试时回调,但我不知道如何获取它。