我们可以在模拟器中测试Face ID吗?

我们可以使用模拟器测试生物识别身份validation吗?

iPhone X Simulator显示面部ID注册菜单,但启用后,我该怎么办?

如何识别面部进行身份validation?

iPhone X Simulator  - 面部识别设置

如果您已从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模拟测试。

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

匹配面的结果:

在此处输入图像描述

不匹配面的结果:

在此处输入图像描述


模拟器只是模拟正确和失败的面部识别的结果,就像使用Touch ID一样。 它不识别面孔

正如您所说,但在启用后,我该怎么办?

就像触摸ID注册一样,您可以在iPhone-X上使用face-Idvalidation内容。 然而,模拟器有一些限制,如Appstore等。通过face-Id注册,你可以做以下事情 –

  • 使用面部识别码进行购买。
  • 使用面部识别function登录(登录应用程序)。
  • 在Safari中自动填写密码。
  • 在iTunes Store,App Store和iBooks Store中。

在Apple看到更多

如果应该在第1之外,那么@krunal给出的只是第2。

 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)) { 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") } } }) }) } //This should be outside of if if let laError = error { print("laError - \(laError)") return } } }