Как узнать, включен ли идентификатор лица - PullRequest
0 голосов
/ 14 декабря 2018

Прежде всего, почему сенсорный идентификатор «включен» для каждого приложения, но не для идентификации лица.Поэтому, если у вас настроен сенсорный идентификатор, каждое приложение может его использовать, но идентификатор лица требует, чтобы пользователь принимал его для каждого приложения.

Как узнать, включен ли для пользователя идентификатор лица для моего приложения.

Это код, который я использую, чтобы узнать тип аутентификации

    let hasAuthenticationBiometrics = myContext.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: nil)
    let hasAuthentication = myContext.canEvaluatePolicy(.deviceOwnerAuthentication, error: nil)

    if #available(iOS 11.0, *) {
        if hasAuthentication {
            if hasAuthenticationBiometrics {
                switch myContext.biometryType {
                case .none: return .none
                case .faceID: return .faceID // Find out if it is enabled
                case .touchID: return .touchID
                }
            } else {
                return .passcode
            }
        } else {
            return .none
        }
    } else {
        if hasAuthentication {
            if hasAuthenticationBiometrics {
                return .touchID
            } else {
                return .passcode
            }
        } else {
            return .none
        }
    }

Если у пользователя есть идентификатор лица, но он отключен для моего приложения, я всегда получаю, что у него "есть" идентификатор лица, даже еслимое приложение проверено паролем?

1 Ответ

0 голосов
/ 14 декабря 2018

Найдя ответ, вы используете указатель ошибки, чтобы узнать, отключил ли пользователь идентификатор лица.

    var error: NSError?
    let hasAuthenticationBiometrics = myContext.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error)
    let hasAuthentication = myContext.canEvaluatePolicy(.deviceOwnerAuthentication, error: nil)

    if #available(iOS 11.0, *) {
        if hasAuthentication {
            if hasAuthenticationBiometrics {
                switch myContext.biometryType {
                case .none: return .none
                case .faceID: return error?.code == -6 ? .passcode : .faceID // If user disabled face id in settings use passcode
                case .touchID: return .touchID
                }
            } else {
                return .passcode
            }
        } else {
            return .none
        }
    } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...