首先,为什么对每个应用“启用”触摸ID,但不对面部ID启用。因此,如果您设置了触摸ID,则每个应用程序都可以使用它,但是面部ID要求用户接受每个应用程序。
如何查找用户是否为我的应用启用了面孔ID。
这是我用来找出强化类型的代码
let hasAuthenticationBiometrics = myContext.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: nil)
let hasAuthentication = myContext.canEvaluatePolicy(.deviceOwnerAuthentication, error: nil)
if #available(iOS 11.0, *) {
if hasAuthentication {
if hasAuthenticationBiometrics {
switch myContext.biometryType {
case .none: return .none
case .faceID: return .faceID // Find out if it is enabled
case .touchID: return .touchID
}
} else {
return .passcode
}
} else {
return .none
}
} else {
if hasAuthentication {
if hasAuthenticationBiometrics {
return .touchID
} else {
return .passcode
}
} else {
return .none
}
}
如果用户具有人脸ID但为我的应用程序禁用了它,即使我的应用程序已通过密码验证,我总会得到他“有”人脸ID?
答案 0 :(得分:0)
找到了答案,您可以使用错误指针来确定用户是否禁用了面部ID。
var error: NSError?
let hasAuthenticationBiometrics = myContext.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error)
let hasAuthentication = myContext.canEvaluatePolicy(.deviceOwnerAuthentication, error: nil)
if #available(iOS 11.0, *) {
if hasAuthentication {
if hasAuthenticationBiometrics {
switch myContext.biometryType {
case .none: return .none
case .faceID: return error?.code == -6 ? .passcode : .faceID // If user disabled face id in settings use passcode
case .touchID: return .touchID
}
} else {
return .passcode
}
} else {
return .none
}
}