2017-11-08 11 views
4

申し訳ありませんが、iPhone-Xは使用できません。FaceIDをチェックするのは正しいですか?

iPhone-Xの起動後、誰もがアプリケーションがiOS11とtouchIDと互換性があることを望んでいますが、開発者がタッチIDをテストするには高価すぎるという問題があります。

私のコードをチェックするiPhoneはありませんが、iOSシミュレータでも同じことを確認できますか?

let context = LAContext() 
if (context.biometryType == .typeFaceID) { 
     // Face ID 
} 
if (context.biometryType == .typeTouchID) { 
    // Touch ID 
} else { 
    // Stone Age 
} 
+0

参照[ここ](https://でのstackoverflow .com/questions/47159066/can-we-test-face-id-in-simulator/47160418#47 160418) – Kerberos

+0

私はあなたの助けを感謝します、thanku @ kerberos –

答えて

7

デバイスなしでテストすることもできます。シミュレータのFace IDを使用してコードを検証すると、iPhone-Xでも同様に動作します。

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

てみてくださいFaceID認証は、アプリのFaceIDの検出を可能にする最初の時間を要求します。

enter image description here


今顔IDの登録を有効にして、顔IDシミュレーションテストをテストするためのアプリケーションを実行します。

ここでは、一致する顔と一致しない顔のシミュレーション結果を示します。

顔を合わせるための結果:

enter image description here


非マッチングの顔のための結果:

enter image description here

+3

良い答え。 'biometryType'プロパティは* Face IDのサポートを実装することとは何の関係もありません。登録と認証の確認は、Touch IDに使用するのと同じ 'canEvaluatePolicy'と' evaluatePolicy'呼び出しです。認証ロジックの一部ではなく、使用されている認証の種類をユーザーに伝えるために 'biometryType'を使います。 (最初のログイン後に「タッチIDを使用する」チェックボックスを使用するすべての銀行アプリを考えてください。代わりに「顔ID」と言う必要があります) – rickster

+0

@ricksterこの回答を編集して改善することを歓迎します。この回答を編集して入力を共有してください。 – Krunal

関連する問題