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:
Kod używam jest zgodny z różnych tutoriali tam. Zobacz kod poniżej.
Moja aplikacja uruchamia się z poniższym ekranie:
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!
Czy znajdujesz sposób na rozwiązanie tego problemu? –