Можем ли мы протестировать биометрическую аутентификацию с помощью симулятора?
Симулятор iPhone X показывает меню для регистрации Face ID, но что я могу сделать после его включения?
Как он будет распознавать лицо для аутентификации?
Можем ли мы протестировать биометрическую аутентификацию с помощью симулятора?
Симулятор iPhone X показывает меню для регистрации Face ID, но что я могу сделать после его включения?
Как он будет распознавать лицо для аутентификации?
Симулятор не распознает лицо, но позволяет имитировать совпадающие и не совпадающие лица, если вы включили опцию 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 ID Testing.
Вот результат моделирования для совпадающих и несовпадающих лиц.
Результат сопоставления лица:
Результат для несовпадающего лица:
Симулятор просто имитирует результат правильного и неудачного распознавания лица, как это происходит с Touch ID. Он не распознает лица.
Как вы спрашиваете, но после включения, что я могу сделать?
Как и при регистрации Touch Id, вы можете проверять вещи с помощью Face-Id на iPhone-X. Однако у симулятора есть некоторые ограничения, такие как Appstore и т. Д. С регистрацией Face-Id вы можете делать следующие вещи:
то же самое, что и @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
}
}
}
См. эту статью. Вы можете создать файлы Biometrics.m, Biometrics.h и bridging-header.h в папке UITests и обновить цель теста пользовательского интерфейса, чтобы использовать этот связующий заголовок. https://github.com/KaneCheshire/BiometricAutomationDemo