Биометрическая аутентификация в Swift реализуется с помощью фреймворка LocalAuthentication и его основного класса LAContext.
LocalAuthenticationLAContextcanEvaluatePolicy, чтобы проверить доступность биометрии перед попыткой аутентификацииevaluatePolicy(_:localizedReason:) с политикой .deviceOwnerAuthenticationWithBiometrics для активации Face ID или Touch IDimport LocalAuthentication
func authenticateUser() {
let context = LAContext()
var error: NSError?
guard context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics,
error: &error) else {
// Биометрия недоступна — переходим к запасному варианту
showPINFallback()
return
}
context.evaluatePolicy(
.deviceOwnerAuthenticationWithBiometrics,
localizedReason: "Authenticate to access your account"
) { success, authError in
DispatchQueue.main.async {
if success {
self.grantAccess()
} else {
self.showPINFallback()
}
}
}
}
Если биометрическая аутентификация недоступна или не прошла, всегда предоставляй запасной вариант:
.deviceOwnerAuthentication, чтобы разрешить системный пароль как встроенный fallbackLAError (например, userFallback, biometryNotEnrolled), чтобы гибко реагировать на разные ситуацииcanEvaluatePolicy первым делом, чтобы избежать ошибок во время выполненияevaluatePolicy выполняются в главном потокеМетод canEvaluatePolicy всегда нужно вызывать перед evaluatePolicy, чтобы предотвратить ошибки времени выполнения и определить доступность биометрии.
Новый — ещё не проверен сообществом
Вы