mam ten kod wracając hasło z pęku kluczy dla danej nazwy użytkownika NSString:iOS SFHFKeychainUtils upadających * czasami * z błędem -25308 errSecInteractionNotAllowed
NSError *error = nil;
NSString *appName = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleNameKey];
NSString *pw = [SFHFKeychainUtils getPasswordForUsername:username andServiceName:appName error:&error];
if(error != nil)
// log the error
Większość czasu dla większości użytkowników to wszystko działa dobrze - ale dla niektórych konkretnych użytkowników to wezwanie wydaje się nie powiedzie (i nosić na braku), gdzie zwraca następujący błąd:
The operation couldn’t be completed. (SFHFKeychainUtilsErrorDomain error -25308.)
to widocznie errSecInteractionNotAllowed - co z tego co czytałem myślę oznacza to, że wymagany jest pewien rodzaj interakcji użytkownika, aby uzyskać dostęp do pęku kluczy.
Czy ktoś ma pojęcie, dlaczego to połączenie może zawodzić tylko dla niektórych użytkowników? Ten wpis z pękiem kluczy jest charakterystyczny dla mojej aplikacji - dlaczego więc interakcja z użytkownikiem była wymagana, aby uzyskać do niego dostęp?
Wszelkie wskazówki znacznie ceniona ...
I zostały zweryfikowane to na iOS4, iOS5 i iOS6. We wszystkich wersjach systemu iOS zwracany jest kod błędu errSecInteractionNotAllowed, jeśli dane, które nie są oznaczone kSecAttrAccessibleAlways, są odczytywane, gdy urządzenie jest w stanie zablokowania (np. Zadania w tle, pobieranie Kiosku itp.). –
kSecAttrAccessibleAlways nie jest świetnym wyborem - możesz uzyskać więcej korzyści związanych z bezpieczeństwem i nadal unikać błędu, używając czegoś takiego jak kSecAttrAccessibleAfterFirstUnlock (lub jeszcze bardziej restrykcyjnego ustawienia, jeśli działa to dla twojej aplikacji). – frankodwyer
Mogę potwierdzić, że kiedy aplikacja jest na pierwszym planie, ale urządzenie jest zablokowane hasłem, biblioteka pęku kluczy daje mi -25308. Dzięki ! – Magurizio