Как я могу наблюдать, когда пользователь аутентифицирует приложение с помощью биометрии?
Просто в коде я использую это так:
let context = LAContext()
if context.canEvaluatePolicy(.deviceOwnerAuthentication, error: nil)
context.evaluatePolicy(.deviceOwnerAuthentication, localizedReason: "jjj") { success, error in
print(error)
print(success)
}
}
Затем пользователь может увидеть:
Все хорошо, пока пользователь не нажмет Cancel
, Затем я отображаю метку:
"Please use biometrics to authenticate"
, СЕЙЧАС мне нужно получить обратный вызов после проверки подлинности пользователя в любое время после отмены первой попытки. Как я могу это обнаружить?
2 ответа
Решение
Вам не нужен "обратный вызов" для этого. Если пользователь отказывается от аутентификации в ответ на диалоговое окно, аутентификация может произойти только в настройках, то есть за пределами вашего приложения. Так что просто проверяйте аутентификацию каждый раз, когда ваше приложение выходит на первый план.
Попробуйте с кодом Obj-C, я думаю, что Swift та же логика
self.context = [[LAContext alloc] init];
[self.context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
localizedReason:strMessage
reply:^(BOOL success, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
if (error) {
if (error.code == LAErrorUserFallback) {
//Do some thing
}else if (error.code == LAErrorAuthenticationFailed) {
//User authen failed
}else if (error.code == LAErrorUserCancel) {
//User cancel
}else{
//Something wrong...
}
return;
}
if (success) {
//Success
} else {
//Failed
return;
}
});
}];