Код: Выделить всё
func authorizationController(
controller: ASAuthorizationController,
didCompleteWithError error: Error
) {
guard let authError = error as? ASAuthorizationError else {
print("Unknown error:", error)
return
}
switch authError.code {
case .canceled:
print("User canceled authentication")
case .failed:
print("Authorization failed (generic)")
case .invalidResponse:
print("Invalid response from Apple")
case .notHandled:
print("Authorization not handled")
case .unknown:
print("Unknown authorization error")
@unknown default:
print("Future unknown error")
}
}
• Пользователь нажимает кнопку
• Пользователь отменяет действие Face ID → .cancelled
• Face ID не работает и возвращается к паролю устройства
• Пользователь вводит неверный пароль → все равно .cancelled
Я никогда не получаю .failed для сбоев пароля или сбоев биометрического резерва — только .canceled.
Вопросы
- Это ожидаемое поведение для ASAuthorizationController?
- Почему неудачная попытка ввода пароля приводит к .canceled вместо .failed?
- Существует ли какой-либо поддерживаемый способ отличить отмену пользователя от ошибки аутентификации (Face ID/пароль) с использованием этого API?
- Когда следует ожидать появления .failed?
Подробнее здесь: https://stackoverflow.com/questions/798 ... d-passcode
Мобильная версия