iOS - сообщение об ошибке изменения локальной аутентификации

В моем приложении есть служба LA, которая использует TouchID, как обычно. Проблема в том, что я хочу изменить то, что написано в предупреждении, которое отображается при запросе аутентификации touchId. Сначала он показывает то, что я объявляю в строке причины, затем, если аутентификация завершается неудачно, он только меняет заголовок на "Повторить", но тело остается прежним.

Есть ли шанс изменить тело оповещения для другого сообщения при сбое аутентификации? Я попытался изменить строку причины, но безрезультатно.

Этот проект создан с использованием Xamarin, но код Objective-C/Swift также приемлем. Заранее спасибо!

UPD: вот мой код:

if (context.CanEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, out authError))
            {
                var myReason = new NSString("Use your finger to authenticate");

                replyHandler = new LAContextReplyHandler((success, error) =>
                {
                    InvokeOnMainThread(() =>
                    {
                        if (success)
                        {
                            Login();
                        }
                        else
                        {
                            myReason = new NSString("Nope try again");

                            switch ((long)error.Code)
                            {
                                case (long)LAStatus.TouchIDLockout: // 5 times wrong, TouchID is locked system-wide
                                    {
                                        var alert = new UIAlertView("Sorry", "Exceeded and blocked message", null, "OK");
                                        alert.Show();
                                        touchIdButton.Hidden = true;
                                    }
                                    break;
                                case (long)LAStatus.AuthenticationFailed: // 3 times wrong
                                    {
                                        var alert = new UIAlertView("Sorry", "Exceeded message", null, "OK");
                                        alert.Show();
                                        touchIdButton.Hidden = true;
                                    }
                                    break;
                                case (long)LAStatus.UserFallback: //Enter Passcode
                                    //no UserFallback for now
                                    break;
                            }

                        }
                    });
                });
                context.EvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, myReason, replyHandler);

1 ответ

Решение

Нет. Не существует API для изменения Причины между процессами аутентификации.

См. https://developer.apple.com/documentation/localauthentication/lacontext/1514176-evaluatepolicy

localizedReason

Предоставленная приложением причина для запроса аутентификации, которая отображается в диалоговом окне аутентификации, представленном пользователю.

Это означает: то, что вы пытаетесь, не предназначено Apple. Причина запроса аутентификации остается той же, независимо от числа неудачных попыток. Другими словами: ваша причина запроса не изменилась после первой неудачной попытки.


Раздел рекламы

Если вы заинтересованы в кроссплатформенном решении для аутентификации по отпечаткам пальцев, взгляните на мой плагин:) https://github.com/smstuebe/xamarin-fingerprint

Другие вопросы по тегам