@NONAME8

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

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

5aa90629e93c8352539215.png5aa9063172a4e565880654.png

Как запрограммировать эту кнопку и считать с нее пароль?
  • Вопрос задан
  • 164 просмотра
Решения вопроса 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
Похожие вопросы