2017-09-13 13 views
5

मैंने नवीनतम एक्सकोड 9 जीएम (13 सितंबर 2017) चलाया है और Hardware > Face ID > Enrolled सिम्युलेटर के साथ-साथ Deployment Target 11.0 सेट किया है। हालांकि मुझे त्रुटि कोड मिल रहा है -6 LAErrorTouchIDNotAvailableआईओएस 11 सिम्युलेटर LAContext और FaceID को अनुमति नहीं दे रहा है

क्या कोई सेटिंग है जो मुझे याद आ रही है?

let myContext = LAContext() 
let myLocalizedReasonString = "You are pretty" 

var authError: NSError? 
if #available(iOS 8.0, macOS 10.12.1, *) { 
    if myContext.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &authError) { 
     myContext.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: myLocalizedReasonString) { success, evaluateError in 
      if success { 

       print("// User authenticated successfully, take appropriate action") 
      } else { 
       print(" // User did not authenticate successfully, look at error and take appropriate action") 
      } 
     } 
    } else { 
     print(" // Could not evaluate policy; look at authError and present an appropriate message to user") 
    } 
} else { 
    print(" // Fallback on earlier versions") 
} 
+0

उपयोग इस पुस्तकालय, यह faceid का समर्थन करता है और दोनों TouchID । https://github.com/tejas-ardeshna/TJBio प्रमाणीकरण –

उत्तर

8

फेस आईडी एक फ्रेमवर्क बग के कारण एक्सकोड 9 जीएम में काम नहीं करता है। एक्सकोड 9.1 इस मुद्दे को हल करता है।

आप आईफोन 8 सिम्युलेटर में अपने ऐप का परीक्षण कर सकते हैं और यह सुनिश्चित कर सकते हैं कि यह टच आईडी के साथ सही तरीके से काम करता है या एक्सकोड 9.1 बीटा चलाता है और फेस फेस आईडी का परीक्षण करता है।

5

मुझे लगता है कि iphone एक्स सिम्युलेटर के faceID पल में काम नहीं करता है, उम्मीद है कि वे इसे जल्दी ही ठीक होगा ...

https://forums.developer.apple.com/thread/86779

हम एक बग रिपोर्ट देखने के लिए कर सकता है यह गति के साथ चीजें: पी https://developer.apple.com/bug-reporting

1

एक्सकोड 9.1 बीटा आज बाहर आया जिसमें मूल कोड सिम्युलेटर में पूरी तरह से काम करना चाहिए!

1

एलएसीएन्टेक्स्ट के लिए सेब दस्तावेज़ीकरण के अनुसार, हमें स्ट्रिंग के कारण के साथ कुंजी NSFaceIDUsageDescription जोड़ने की आवश्यकता है, क्योंकि यह डिवाइस पर FaceId के उपयोग के लिए प्राधिकरण अनुरोध प्रदर्शित करेगा।

उदाहरण जोड़ने इस Info.plist रहे हैं:

NSFaceIDUsageDescription 

यह स्ट्रिंग टाइप करें, और चेहरा आईडी कैमरा के लिए उपयोग के लिए, एक पाठ है कि आप दिखाना चाहते हैं जोड़ने के शीघ्र अनुरोध में करने के लिए निर्धारित किया है।

"Your app" request your permission to use Face ID, for you to login to your account/unlock your notes/what ever reason in the end. 

इस जोड़कर, आप iPhone एक्स के लिए सिम्युलेटर पर जा सकते हैं, और आप चेहरा आईडी के लिए प्रेरित किया जाएगा, प्रेस स्वीकार करते हैं, और सब कुछ पूरी तरह से काम करना चाहिए।

Simulator -> Hardware -> Face ID/Touch ID -> Enrolled

में जाकर सिम्युलेटर के लिए जीवमिति समर्थन नामांकन के लिए याद रखें तो फिर तुम सिर्फ Match/Non-Matching Touch/Face ID दबाया करने के लिए, अपने से निपटने

का परीक्षण करना अधिक जानकारी के लिए और एप्पल के प्रलेखन की जाँच की जरूरत है: https://developer.apple.com/documentation/localauthentication/lacontext

---- संपादित ----

यह दोनों Xcode 9.0 और 9.1

में मेरे लिए काम किया
2

फेस आईडी अब एक्सकोड 9.1 के साथ काम कर रहा है। सिम्युलेटर में इसका परीक्षण करने के लिए इन चरणों का पालन करें।

अपने लक्ष्य की info.plist फ़ाइल में गोपनीयता कथन जोड़ें।

enter image description here

आयात LocalAuthentication अपनी परियोजना के लिए ढांचे और आपके विचार नियंत्रक के लिए निम्न कोड जोड़ सकते हैं और FaceID के साथ प्रयास करें

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 अनुमति देने के लिए के लिए संकेत देगा अपने ऐप के लिए पहचान

enter image description here


अब सक्षम चेहरा आईडी नामांकन और चेहरा आईडी सिमुलेशन परीक्षण परीक्षण करने के लिए अपने अनुप्रयोग चलाते हैं।

enter image description here

यहाँ मिलान और गैर मिलान चेहरे के लिए सिमुलेशन परिणाम है।

चेहरे के मिलान के लिए परिणाम: न खाने वाले चेहरे के लिए

enter image description here


परिणाम:

enter image description here

+1

यह पूरी तरह से ठीक काम करता है –

संबंधित मुद्दे