Biometry当用户拒绝使用生物测量时输入

时间:2017-11-23 10:52:38

标签: ios iphone-x face-id localauthentication

在我们的应用程序中,用户必须注册设备生物测量,才能将其用于身份验证。 注册文本和法律注释根据相关的生物统计学(注册到触摸ID或注册到面部ID) 据我所知,生物测定类型可通过LAContext获得,但如果用户拒绝使用生物测量,则上下文返回biometryType = .none

其他想要屏幕尺寸并与iphone X比较的想法(糟糕的坏代码)?

Value

由于

1 个答案:

答案 0 :(得分:6)

我有同样的问题,我刚刚发现,如果您使用 LAPolicyDeviceOwnerAuthentication 而不是 LAPolicyDeviceOwnerAuthenticationWithBiometrics 进行评估,即使用户拒绝了权限,评估成功,您获得正确的biometryType。你的代码就像

static fileprivate var biometryType: DSLocalAuthenticationBiometryType {
    let context = LAContext()

    var error: NSError?
    let _ = context.canEvaluatePolicy(.deviceOwnerAuthentication, error: &error)

    if #available(iOS 11.0, *) {

        return context.biometryType == .typeFaceID ? .typeFaceID : .none
    }
    else {
        return .none
    }
}

注意:在没有触摸ID和面部识别码的设备上,它仍然返回YES,因此您不知道设备是否真的具有生物特征hw,而iOS低于11(不是公开属性biometriyType)

<强>更新

对于iOS 10或更低版本的设备,您可以使用 LAPolicyDeviceOwnerAuthenticationWithBiometrics像往常一样,它将正常运行(无论设备是否支持触摸ID,都返回true),因此只需区分正在运行的操作系统版本:)

让我知道它是否有效:)

最佳