Невозможно локализовать всплывающее окно Face Id для несоответствующего лица
Похоже, Face Id игнорирует localizedFallbackTitle
а также localizedReason
, тем не мение localizedCancelTitle
работает нормально. Кто-нибудь знает, как заставить это работать?
Мой код:
LAContext *context = [[LAContext alloc] init];
if ([context respondsToSelector:@selector(setLocalizedCancelTitle:)]) {
context.localizedCancelTitle = [Language get:CANCEL alter:nil];
}
if ([context respondsToSelector:@selector(setLocalizedFallbackTitle:)])
{
context.localizedFallbackTitle = [Language get:TRY_AGAIN alter:nil];
}
NSError *error = nil;
if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthentication error:&error]) {
[context evaluatePolicy:LAPolicyDeviceOwnerAuthentication
localizedReason:[Language get:AUTHRNTICATE_USING_YOUR_FACE alter:nil] reply:^(BOOL success, NSError *error) {
//code
}
Скриншот:
Я хочу локализовать все в этом всплывающем окне, если это возможно.
Примечание: Прикрепленный скриншот сделан на симуляторе. Я также проверил это на реальном устройстве, но результат тот же. Также для Touch id он работает правильно.
1 ответ
Согласно этому Посту, нет никакого API для изменения Причины между процессами аутентификации.
localizedReason
Предоставленная приложением причина для запроса аутентификации, которая отображается в> диалоге аутентификации, представленном пользователю.
Вы можете использовать https://github.com/rushisangani/BiometricAuthentication, чтобы показать ваше сообщение.
BioMetricAuthenticator.authenticateWithBioMetrics(reason: "", success: {
// authentication successful
}, failure: { [weak self] (error) in
// do nothing on canceled
if error == .canceledByUser || error == .canceledBySystem {
return
}
// device does not support biometric (face id or touch id) authentication
else if error == .biometryNotAvailable {
self?.showErrorAlert(message: error.message())
}
// show alternatives on fallback button clicked
else if error == .fallback {
// here we're entering username and password
self?.txtUsername.becomeFirstResponder()
}
// No biometry enrolled in this device, ask user to register fingerprint or face
else if error == .biometryNotEnrolled {
self?.showGotoSettingsAlert(message: error.message())
}
// Biometry is locked out now, because there were too many failed attempts.
// Need to enter device passcode to unlock.
else if error == .biometryLockedout {
// show passcode authentication
}
// show error on authentication failed
else {
self?.showErrorAlert(message: error.message())
}
})