我们可以在模拟器中测试Face ID吗?
我们可以使用模拟器测试生物识别身份validation吗?
iPhone X Simulator显示面部ID注册菜单,但启用后,我该怎么办?
如何识别面部进行身份validation?
如果您已从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 } } }