如何知道是否启用了面部识别码

时间:2018-12-14 11:31:58

标签: ios biometrics

首先,为什么对每个应用“启用”触摸ID,但不对面部ID启用。因此,如果您设置了触摸ID,则每个应用程序都可以使用它,但是面部ID要求用户接受每个应用程序。

如何查找用户是否为我的应用启用了面孔ID。

这是我用来找出强化类型的代码

    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
        }
    }

如果用户具有人脸ID但为我的应用程序禁用了它,即使我的应用程序已通过密码验证,我总会得到他“有”人脸ID?

1 个答案:

答案 0 :(得分:0)

找到了答案,您可以使用错误指针来确定用户是否禁用了面部ID。

    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
        }
    }