Как ввести пароль в системное уведомление, когда FaceID не сработало?

Делаю авторизацию, используя FaceID и TouchID, в зависимости от устройства.
При нераспозании лица или пальца всегда выскакивает автоматическое системное уведомление, когда предлагает мне повторить попытку либо ввести пароль.
Но эта кнопка "Enter Password" не работает и просто закрывает уведомление, по нажатию на нее.

5aa90629e93c8352539215.png5aa9063172a4e565880654.png

Как запрограммировать эту кнопку и считать с нее пароль?
  • Вопрос задан
  • 166 просмотров
Решения вопроса 1
doublench21
@doublench21
https://www.prolificinteractive.com/2015/01/26/tut...

Думаю тут вы найдёте все волнующие Вас вопросы, в том числе и проверку пароля.

Для начала переходим сюда и смотрим:
case deviceOwnerAuthenticationWithBiometrics
Indicates that the device owner must authenticate using biometry. // Юзаем только биометрию

case deviceOwnerAuthentication
Indicates that the device owner can authenticate using biometry or the device password. //Юзаем биометрия и если её нет, то Пароль
Подробности по каждому из методов можно найти там же. Подробности 2ого варианта

У тебя в коде 1ый варинт, сменим на 2ой:
if contex.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: nil) {
            contex.evaluatePolicy(LAPolicy.deviceOwnerAuthentication, localizedReason: "Use TouchID", reply: { wasSuccessful, _ in

                if wasSuccessful {
                    print("Все получилось")
                    let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
                    let homeVC = mainStoryboard.instantiateViewController(withIdentifier: "HomeVC")
                    self.navigationController?.pushViewController(homeVC, animated: true)
                } else {
                    print("Что-то пошло не так")
                }
            })
        }

При таком подходе, появится следующее:5aa933ca7eb2a419650612.jpeg

Ну и забыл добавить, если тип проверки оставить неизменным, то есть 1ый способ, то при нажатии на кнопку ввести пароль нужно ловить ошибку типа . userFallback

При таком подходе после того как Вы отловили, вы уже сами вольны делать все что угодно. Выводить контрол или ещё что. НО, вывести экран с кнопками для ввода пинкод сами Вы не можете. Нужно реализовать свой, либо найти готовый, коих можно найти. А лучше воспользоваться обычным аллертом с полем для ввода.

Authentication was canceled because the user tapped the fallback button in the authentication dialog, but no fallback is available for the authentication

Подробности тут https://developer.apple.com/documentation/localaut...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы