Как мы узнаем, что приложение уже включило сенсорный или лицевой идентификатор? Прямо сейчас я использую CocoPod для биометрической аутентификации, чтобы интегрировать это.
Заранее спасибо
Как мы узнаем, что приложение уже включило сенсорный или лицевой идентификатор? Прямо сейчас я использую CocoPod для биометрической аутентификации, чтобы интегрировать это.
Заранее спасибо
Вы можете использовать LocalAuthentication с LAContext, он выполнит свою работу и расскажет вам все, что вы хотите знать о состоянии биометрии устройства. Вы можете использовать этот одноэлементный класс в качестве отправной точки:
import LocalAuthentication
final public class BiometryManager {
public typealias SuccessComplition = () -> Void
public typealias ErrorComplition = (Error?) -> Void
public static let shared = BiometryManager()
private let context = LAContext()
private init() { }
public var biometryType: LABiometryType {
var error: NSError?
guard context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) else {
return LABiometryType.LABiometryNone
}
return context.biometryType
}
public func authenticate(successComplition: @escaping SuccessComplition, errorComplition: @escaping ErrorComplition) {
var error: NSError?
let reasonString = "provide reason text"
guard context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) else {
errorComplition(error)
return
}
context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: reasonString, reply: { (success, evalPolicyError) in
DispatchQueue.main.async {
if success {
successComplition()
} else {
errorComplition(evalPolicyError)
}
}
})
}
}
Этот класс доступен с iOS 11, и он расскажет вам о биометрическом типе устройства, и вы также можете вызвать метод аутентификации. Если он возвращает ошибку, вы можете преобразовать ее в LAError и получить от нее более конкретные коды ошибок. Надеюсь, поможет.
Взгляните на: https://developer.apple.com/documentation/localauthentication/laerror а>
Вы можете добавить это свойство в класс выше, чтобы проверить доступность биометрии:
public var isAvailable: Bool {
var error: NSError?
if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) {return true}
guard let laError = error as? LAError else {return false}
// Check the laError.code, maybe its locked or something else and make specific decision
}