2016-07-03 14 views
1

Hier ist mein Code für die TouchId-Funktion. Ich möchte, dass der Benutzer den PIN-Code, den er zum Entsperren seines Telefons verwendet, eingeben muss, um seine Identität zu überprüfen und sich einzuloggen, ohne den Benutzernamen und das Passwort einzugeben. Aber ich möchte nur, dass sie diese Option haben, wenn die Touch-ID nicht funktioniert oder nicht verfügbar ist.Schnell, wie Pin-Code für den Zugriff auf Schlüsselbund verwenden

Wie würde ich darüber gehen?

@IBAction func touchIDLogin(sender: AnyObject) { 
    let authenticationContext = LAContext() 
    var error: NSError? 

    //check if device supports touch id, if not show error and stop 
    guard authenticationContext.canEvaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics, error: &error) else{ 
     displayAlert("TOUCH ID ERROR", msg: "This device does not support TouchID", option: false) 
     return 
    } 

    authenticationContext.evaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics, localizedReason: "Verify who you are to login", reply: {[unowned self](success, error) -> Void in 
     if(success){ 

      //Fingerprint recognized 
      var stored_pass = "" 
      var stored_user = "" 
      stored_pass = (self.my_keychain_wrapper.myObjectForKey("v_Data") as? String)! 
      stored_user = (NSUserDefaults.standardUserDefaults().valueForKey("username") as? String)! 
      if(!stored_pass.isEmpty || !stored_user.isEmpty){ 
       PFUser.logInWithUsernameInBackground(stored_user, password: stored_pass, block: { (user, error) -> Void in 

        //unsuccessful login display error message 
        if user == nil { 
         if let error_string = error!.userInfo["error"] as? String{ 
          self.displayAlert("ERROR IN LOGIN", msg: error_string, option: false) 
         } 
        } 

        //successful login 
        else{ 
         self.performSegueWithIdentifier("dashboard_segue", sender: self) 
        } 
       }) 
      } 
      else{ 
       self.displayAlert("LOGIN ERROR", msg: "No valid login credentials were found", option: false) 
      } 
     } 

      //error check 
     else{ 
      if let error = error{ 
       let message = self.errorMessageForLAErrorCode(error.code) 
       self.displayAlert("TOUCH ID ERROR", msg: message, option: false) 
      } 
     } 
     }) 
} 
+0

Ich glaube, Sie müssen Ihre eigenen Stift verwalten und es als Ausweich von Touch-ID verwenden, schlägt fehl – Wain

+0

https://developer.apple.com/reference/localauthentication/lapolicy/1514164-deviceownerauthentication – user3441734

+0

Diese Art von hilfreich, aber ich immer noch weiß nicht, wie man das ausnutzt: / – momonkey

Antwort

0

Leider bietet iOS keine Möglichkeit, einen Eintrag anhand des Systempasscodes zu verifizieren.

Wenn die touchID fehlschlagen sollte, muss die App möglicherweise ihr eigenes Passwort verwalten. This library ermöglicht es einer App, einen Passcode mit einer Benutzeroberfläche ähnlich wie die Systembenutzeroberfläche zu verwalten, und Sie können Benutzer dazu ermutigen, den App-Passcode auf den des Systems zu setzen.