我想获取设备中使用的当前锁定类型的字符串,无论是FaceID,touchID还是PassCode。下面是我的代码:-
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
}
但这canEvaluatePolicy仅检查设备是否支持生物识别。即使尚未设置FaceID但启用了密码,它也不会提供有关密码的信息。我需要显示启用的类型是“密码”。有什么办法可以做到这一点?
答案 0 :(得分:1)
您必须使用LAPolicy.deviceOwnerAuthenticationWithBiometrics
。
根据Apple文档:
如果Touch ID或Face ID不可用或未注册,请采取政策 评估失败。三个不成功的Touch ID或Face ID后 连续尝试,策略评估将失败。触控ID和面部 尝试失败五次后,将禁用ID身份验证, 要求用户输入设备密码才能 重新启用。
LAPolicy.deviceOwnerAuthentication 启用:
如果Touch ID或Face ID可用,已注册且未禁用,则 首先要求用户输入。否则,要求他们输入 设备密码。如果未启用设备密码,则策略 评估失败。 6后禁用密码验证 尝试失败,并且之间的延迟逐渐增加 他们。