Проверьте FaceID включен или нет

Я хочу получить строку для текущего типа блокировки, используемого в устройстве, будь то FaceID, touchID или PassCode. Ниже мой код:-

func getBiometricType() -> String {
    var biometricType: Global.BiometricType {
        let context = LAContext()
        var error: NSError?
        guard context.canEvaluatePolicy(.deviceOwnerAuthentication, error: &error) else { return .none }
        if #available(iOS 11.0, *) {
            switch context.biometryType {
                case .touchID:
                    return .touchID
                case .faceID:
                    return .faceID
                case .none:
                    return .none
            }
        } else {
            guard context.canEvaluatePolicy(.deviceOwnerAuthentication, error: &error) else { return .none }
            return context.canEvaluatePolicy(.deviceOwnerAuthentication, error: nil) ?
     .touchID : .PIN
        }
    }
    return biometricType.rawValue
}

Но это может EveatePolicy только проверяет, поддерживает ли устройство биометрические данные или нет. Даже если FaceID еще не настроен, но пароль включен, он не дает информации о пароле. Как мне нужно показать, включенным типом является "Код доступа". Есть ли способ добиться этого?

1 ответ

Вы должны использовать LAPolicy.deviceOwnerAuthenticationWithBiometrics,

Согласно документам Apple:

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

LAPolicy.deviceOwnerAuthentication позволяет:

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

Другие вопросы по тегам