Как использовать сцену блокировки паролем в моем приложении?

На самом деле, я создаю приложение, которое содержит локальную аутентификацию.

Мой код до сих пор:

func authenticateUser() {
        let authenticationContext = LAContext()
        var error: NSError?
        let reasonString = "Touch the Touch ID sensor to unlock."

        // Check if the device can evaluate the policy.
        if authenticationContext.canEvaluatePolicy(LAPolicy.deviceOwnerAuthenticationWithBiometrics, error: &error) {

            authenticationContext.evaluatePolicy( .deviceOwnerAuthenticationWithBiometrics, localizedReason: reasonString, reply: { (success, evalPolicyError) in

                if success {
                    print("success")
                } else {
                    if let evaluateError = error as NSError? {
                        // enter password using system UI 
                    }

                }
            })

        } else {
            print("toch id not available")
           // enter password using system UI
        }
    }

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

Как ниже изображение:

Как мне это сделать?

1 ответ

Решение

На данный момент, я боюсь, что вы не можете получить доступ к этому экрану блокировки пароля в вашем приложении, это связано с самой iOS. Возможно, вам придется создать свой собственный контроллер представления, чтобы он выглядел / вел себя как сценарий блокировки пароля (с Touch ID). Я бы предложил использовать библиотеку для достижения этой цели, лично я пробовал PasscodeLock, и она отлично работает для меня.

Вы должны использовать .deviceOwnerAuthentication вместо .deviceOwnerAuthenticationWithBiometrics оценить политику. С этим параметром система использует биометрическую аутентификацию, если она доступна, иначе она отображает экран пароля. И если биометрическая аутентификация доступна, но не удается, кнопка аварийного переключения перенаправляет на экран пароля. Смотрите документацию:

Если Touch ID или Face ID доступны, зарегистрированы и не отключены, пользователь сначала запрашивает это. В противном случае их просят ввести пароль устройства.

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

Итак, ваш код будет:

func authenticateUser() {
        let authenticationContext = LAContext()
        var error: NSError?
        let reasonString = "Touch the Touch ID sensor to unlock."

        // Check if the device can evaluate the policy.
        if authenticationContext.canEvaluatePolicy(LAPolicy.deviceOwnerAuthentication, error: &error) {

            authenticationContext.evaluatePolicy( .deviceOwnerAuthentication, localizedReason: reasonString, reply: { (success, evalPolicyError) in

                if success {
                    print("success")
                } else {
                    // Handle evaluation failure or cancel
                }
            })

        } else {
            print("passcode not set")
        }
    }
Другие вопросы по тегам