生物统计types当用户拒绝生物统计使用

在我们的应用程序中,用户必须注册到设备biometry才能使用它进行身份validation。 注册文本和法律注释是根据相关的生物统计学(注册触摸ID或注册到面部ID)据我所知,生物统计types可以通过LAContext获得,但是如果用户拒绝使用生物统计学,则上下文返回biometryType = .none

任何想法,其他要求的屏幕大小和iPhone X(糟糕的坏代码)比较?

static fileprivate var biometryType: DSLocalAuthenticationBiometryType { let context = LAContext() var error: NSError? let _ = context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) if #available(iOS 11.0, *) { return context.biometryType == .typeFaceID ? .typeFaceID : .none } else { return .none } } 

谢谢

我有同样的相同的问题,我刚刚发现,如果你评估的关键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 } } 

注意 :在没有touch id和face id的设备上,它仍然会返回YES,所以您不知道设备是否真的有生物识别hw,或者iOS不低于11(不暴露属性biometriyType)

更新

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

让我知道如果它的作品:)

最好

Interesting Posts