2016-04-06 8 views
5

Używam architektury LocalAuthentication dla systemu iOS i postępuję zgodnie z ogólnymi samouczkami z całego internetu, aby zaimplementować uwierzytelnianie TouchID dla mojej aplikacji.Framework LocalAuthentication - Jak uzyskać "Enter Password", aby wyświetlić przy pierwszym wywołaniu?

Gdy aplikacja nazywa context.evaluatePolicy (polityka, błąd: & błąd) Chcę pokazać użytkownikowi opcję "Wprowadź hasło", zamiast wybrać użytkownika "Anuluj", aby zamknąć okno dialogowe i wprowadzić hasło .

Jest to domyślne zachowanie w aplikacji AppStore, ale nie mogę sprawić, aby moja aplikacja działała w taki sam sposób. Proszę zobaczyć zrzut ekranu poniżej AppStore:

AppStore TouchID Authentication

Kod używam jest zgodny z różnych tutoriali tam. Zobacz kod poniżej.

Moja aplikacja uruchamia się z poniższym ekranie:

My App TouchID authentication

Szukałem wysokiej i niskiej, na SO i innych stron, ale nie był w stanie uruchomić aplikację z mojego „Pokaż hasło”. Kiedy używam niezarejestrowanego palca do uwierzytelnienia zmian w oknie dialogowym LA, wybieram "Spróbuj ponownie" i przycisk "Pokaż hasło".

 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 { 
     } 

Proszę pomóc!

+0

Czy znajdujesz sposób na rozwiązanie tego problemu? –

Odpowiedz

2

Nie możesz. Użytkownik musi "wprowadzić" co najmniej raz nieprawidłowy odcisk palca, aby umożliwić pojawienie się przycisku awaryjnego. Mam nadzieję, że jabłko dodać właściwość w funkcji.

0

Niestety nie można tego zrobić, lokalne ramy uwierzytelniania są bardzo ograniczone ze względu na bezpieczeństwo i prywatność.

Powiązane problemy