在我们的应用程序中,用户必须注册到设备生物计量学才能使用它进行身份验证。注册文本和法律注释是根据相关的生物计量学(注册以触摸ID或注册到脸ID),据我发现,生物测量类型可以通过LAContext获得,但是如果用户拒绝使用生物测量,则上下文返回biometryType=.none。
除了要求屏幕大小和与iphone (糟糕的代码)相比,还有什么其他的想法吗?
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
}
}谢谢
发布于 2017-11-24 09:52:34
我也遇到了同样的问题,而且我刚刚发现,即使在用户拒绝许可之后,如果您使用键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和face id的设备上,它仍然返回“是”,因此您将不知道该设备是否真正具有生物特征hw,iOS低于11 (不公开属性biometriyType)。
更新
对于具有版本10或更低版本的设备,您可以像往常一样使用iOS,它将正确运行(返回设备是否支持触摸Id),因此只需区分运行中的OS版本:)
(请告诉我它是否有效:)
最好的
https://stackoverflow.com/questions/47453743
复制相似问题