在我们的应用程序中,用户必须注册设备生物测量,才能将其用于身份验证。 注册文本和法律注释根据相关的生物统计学(注册到触摸ID或注册到面部ID) 据我所知,生物测定类型可通过LAContext获得,但如果用户拒绝使用生物测量,则上下文返回biometryType = .none
其他想要屏幕尺寸并与iphone X比较的想法(糟糕的坏代码)?
Value
由于
答案 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),因此只需区分正在运行的操作系统版本:)
让我知道它是否有效:)
最佳