检查面容ID是否启用



我想获取设备中使用的当前锁定类型的字符串,无论是FaceID,touchID还是密码。以下是我的代码:-

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
}

但是这个可以评估策略只检查设备是否支持生物识别。即使尚未设置FaceID但启用了密码,它也不会提供有关密码的信息。因为我需要显示启用的类型是"密码"。有什么办法可以做到这一点吗?

你必须

使用LAPolicy.deviceOwnerAuthenticationWithBiometrics .

根据苹果文档:

如果触控 ID 或面容 ID 不可用或未注册,则政策 评估失败。三次不成功的触摸ID或面部ID后 连续尝试,策略评估将失败。触摸ID和面部 五次尝试失败后禁用 ID 身份验证, 要求用户输入设备密码才能 已重新启用。

LAPolicy.deviceOwnerAuthentication支持:

如果触控 ID 或面容 ID 可用、已注册且未停用,则 首先要求用户这样做。否则,他们被要求输入 设备密码。如果未启用设备密码,则策略 评估失败。密码身份验证在 6 后禁用 尝试失败,延迟逐渐增加 他们。

相关内容

  • 没有找到相关文章

最新更新