Как использовать сцену блокировки паролем в моем приложении?
На самом деле, я создаю приложение, которое содержит локальную аутентификацию.
Мой код до сих пор:
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")
}
}