检查FaceID是否正确?

对不起,iPhone-X不可用。

在推出iPhone-X之后,每个人都希望他们的应用程序应该与iOS11和touchID兼容,但问题是开发人员测试触摸ID太昂贵了。

我没有iPhone检查我的代码,但我可以在iOS模拟器中检查相同吗?

let context = LAContext() if ( context.biometryType == .typeFaceID ) { // Face ID } if ( context.biometryType == .typeTouchID) { // Touch ID } else { // Stone Age } 

您也可以在没有设备的情况下测试它 使用模拟器的Face IDvalidation您的代码,它在iPhone-X中的行为也类似。

如果您已从Face ID启用了“已Enrolled选项,则模拟器无法识别面部,但允许您模拟匹配和不匹配的面部。

将以下代码添加到视图控制器并尝试使用Face-ID

 import LocalAuthentication class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() localAuthentication() } func localAuthentication() -> Void { let laContext = LAContext() var error: NSError? let biometricsPolicy = LAPolicy.deviceOwnerAuthenticationWithBiometrics if (laContext.canEvaluatePolicy(biometricsPolicy, error: &error)) { if let laError = error { print("laError - \(laError)") return } var localizedReason = "Unlock device" if #available(iOS 11.0, *) { if (laContext.biometryType == LABiometryType.faceID) { localizedReason = "Unlock using Face ID" print("FaceId support") } else if (laContext.biometryType == LABiometryType.touchID) { localizedReason = "Unlock using Touch ID" print("TouchId support") } else { print("No Biometric support") } } else { // Fallback on earlier versions } laContext.evaluatePolicy(biometricsPolicy, localizedReason: localizedReason, reply: { (isSuccess, error) in DispatchQueue.main.async(execute: { if let laError = error { print("laError - \(laError)") } else { if isSuccess { print("sucess") } else { print("failure") } } }) }) } } } 

FaceID身份validation将提示您第一次允许您的应用进行FaceID检测。

在此处输入图像描述

现在启用Face ID注册并运行您的应用以测试Face ID模拟测试。

这是匹配和不匹配面的模拟结果。

匹配面的结果:

在此处输入图像描述

不匹配面的结果:

在此处输入图像描述