シミュレーターを使用して生体認証をテストできますか?
IPhone XシミュレーターにはFace ID登録のメニューが表示されますが、それを有効にした後、何ができますか?
認証のために顔をどのように認識しますか?
シミュレータは顔を認識しませんが、Face ID
からEnrolled
オプションを有効にしている場合、一致する顔と一致しない顔をシミュレートできます。
View Controllerに次のコードを追加して、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シミュレーションテストをテストします。
これは、一致する顔と一致しない顔のシミュレーション結果です
顔の照合結果:
一致しない顔の結果:
シミュレーターは、Touch IDと同様に、正しい顔認識と失敗した顔認識の結果をシミュレートします。それ顔を認識しません。
を求めているが、それを有効にした後、私は何ができますか?
タッチID登録のように、iPhone-Xのface-Idで確認できます。ただし、シミュレータにはAppstoreなどの制限があります。face-id登録を使用すると、次のことができます-
@krunalが1番目の外にある場合は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
}
}
}