2016-04-06 3 views
5

Ich verwende LocalAuthentication Framework für iOS und habe die allgemeinen Tutorials aus dem Internet verfolgt, um die TouchID Authentifizierung für meine App zu implementieren.LocalAuthentication Framework - Wie erhalte ich "Enter Password", um beim ersten Aufruf zu zeigen

Wenn die App context.evaluatePolicy aufruft (Richtlinie, Fehler: & Fehler) Ich möchte dem Benutzer die Option "Kennwort eingeben" anzeigen, anstatt dass der Benutzer "Abbrechen" wählt, um das Dialogfeld zu schließen und das Kennwort einzugeben .

Dies ist das Standardverhalten in der AppStore App, aber ich kann meine App nicht auf die gleiche Weise ausführen. Bitte beachten Sie die App Store Screenshot unten:

AppStore TouchID Authentication

Der Code ich verwende, ist im Einklang mit den verschiedenen Tutorials gibt. Siehe Code unten.

Meine App startet mit dem folgenden Bild:

My App TouchID authentication

ich hoch und niedrig sind gesucht, auf SO und andere Seiten, aber nicht in der Lage meine app mit „Show Password“ zu starten. Wenn ich einen nicht registrierten Finger zur Authentifizierung des LA-Dialogfelds verwende, ändert sich die Einstellung zu "Erneut versuchen" und die Schaltfläche "Passwort anzeigen".

 let context = LAContext() 
     var error : NSError? 

     // Test if TouchID policy is available on the device and a fingerprint has been enrolled. 
     var policy : LAPolicy! 
     if #available(iOS 9.0, *) { 
      policy = (context.canEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, error:&error) ? LAPolicy.DeviceOwnerAuthenticationWithBiometrics : LAPolicy.DeviceOwnerAuthentication) 
     } else { 
      // Fallback on earlier versions 
      policy = LAPolicy.DeviceOwnerAuthenticationWithBiometrics 
     } 
     if context.canEvaluatePolicy(policy, error:&error) { 
      // evaluate 
      context.evaluatePolicy(policy, localizedReason: reason, reply: { 
       (success: Bool, authenticationError: NSError?) -> Void in 

       // check whether evaluation of fingerprint was successful 
       if success { 
        okHandler() 
       } else { 
        // fingerprint validation failed 
        // get the reason for validation failure 
        var failureReason = "unable to authenticate user" 
        if let code = error?.code { 
         switch code { 
         case LAError.AuthenticationFailed.rawValue: 
          failureReason = "authentication failed" 
         case LAError.UserCancel.rawValue: 
          failureReason = "user canceled authentication" 
         case LAError.SystemCancel.rawValue: 
          failureReason = "system canceled authentication" 
         case LAError.PasscodeNotSet.rawValue: 
          failureReason = "passcode not set" 
         case LAError.UserFallback.rawValue: 
          failureReason = "user chose password" 
         default: 
          failureReason = "unable to authenticate user" 
         } 
        } 
        print("validation reason: \(failureReason)."); 
        cancelHandler() 
       } 
      }) 
     } else { 
     } 

Bitte helfen!

+0

Findest du Weg für dieses Problem? –

Antwort

2

Sie können nicht. Der Benutzer muss mindestens einmal einen falschen Fingerabdruck eingeben, um den Fallback-Button erscheinen zu lassen. Hoffentlich fügt Apple eine Eigenschaft in das Feature ein.

0

Leider können Sie dies nicht tun. Das lokale Authentifizierungs-Framework ist aus Sicherheits- und Datenschutzgründen extrem eingeschränkt.

Verwandte Themen