Можем ли мы проверить Face ID в симуляторе?
4 ответа
Симулятор не распознает лицо, но позволяет имитировать совпадающие и не совпадающие лица, если вы включили Enrolled
вариант из Face ID
,
Добавьте следующий код в свой контроллер вида и попробуйте использовать 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 впервые предложит вам разрешить обнаружение FaceID для вашего приложения.
Теперь включите регистрацию Face ID и запустите приложение, чтобы протестировать Тестирование Face Face.
Вот результат моделирования для совпадающих и несовпадающих граней.
Результат для сопоставления лица:
Результат для несоответствующего лица:
Симулятор просто имитирует результат правильного и неудачного распознавания лица, как это происходит с Touch ID. Он не распознает лица.
См. Эту статью. Вы можете создать файлы Biometrics.m, Biometrics.h и bridging-header.h в папке UITests и обновить цель теста пользовательского интерфейса, чтобы использовать этот заголовок моста. https://github.com/KaneCheshire/BiometricAutomationDemo
Как вы спрашиваете, но после включения, что я могу сделать?
Так же, как при регистрации с сенсорным идентификатором, вы можете проверить вещи с помощью Face-Id на iPhone-X. Однако у симулятора есть некоторые ограничения, такие как Appstore и т. Д. При регистрации в Face-Id вы можете выполнять следующие действия:
- Используйте Face ID, чтобы делать покупки.
- Войдите с помощью Face ID (Войдите в приложения).
- Автозаполнение паролей в Safari.
- В iTunes Store, App Store и магазине iBooks.
Так же, как дать @krunal только 2-е, если должно быть за пределами 1-го
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
}
}
}