Mam aplikację na iOS, która przechowuje token dostępu w pęku kluczy. W ciągu ostatnich kilku miesięcy zauważyłem, że około 2% użytkowników otrzymuje errSecItemNotFound podczas próby odzyskania tokena.Niewielki procent użytkowników uzyskujących errSecItemNotFound podczas pobierania danych z pęku kluczy
Wszystkie odpowiednie wątki StackOverflow wskazują na zadania w tle będące winowajcą (iOS KeyChain not retrieving values from background) lub włączając niepoprawne parametry w ciągu zapytania (Keychain: Item reported as errSecItemNotFound, but receive errSecDuplicateItem on addition).
Używam kSecAttrAccessibleAfterFirstUnlock, więc zadania w tle powinny być w stanie uzyskać dostęp do pęku kluczy.
Ponadto wyszukiwane wygląda następująco:
NSMutableDictionary *query = [[NSMutableDictionary alloc] init];
[query setObject:(__bridge id)kSecClassGenericPassword forKey:(__bridge id)kSecClass];
[query setObject:(__bridge id)kCFBooleanTrue forKey:(__bridge id)kSecReturnData];
[query setObject:(__bridge id)kSecMatchLimitOne forKey:(__bridge id)kSecMatchLimit];
[query setObject:service forKey:(__bridge id)kSecAttrService];
[query setObject:key forKey:(__bridge id)kSecAttrGeneric];
[query setObject:key forKey:(__bridge id)kSecAttrAccount];
(Ustawianie kSecAttrGeneric jest chyba zbędne, ale to nie wpływa na wynik zapytania w każdym razie)
Dla przypomnienia, ja wystąpił ten błąd zarówno z SSKeyChain i UICKeychainStore.
Wszelkie wskazówki byłyby bardzo mile widziane:]
cześć !! Mam dokładnie ten sam problem ... Czy UICKeyChainStore lib rozwiązało to? Dzięki!! – Jovem