iOS KeyChain ruft keine Werte aus dem Hintergrund ab

Ich speichere derzeit den Benutzernamen (E-Mail) und einen gesalzenen Hash der E-Mail und des Passworts im iOS-Schlüsselbund. Ich benutze die ARC'ified Version gefundenHier.

<code>KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"MyCustomIdentifier" accessGroup:nil];
[wrapper setObject:APP_NAME forKey:(__bridge id)kSecAttrService];
[wrapper setObject:email forKey:(__bridge id)kSecAttrAccount];
[wrapper setObject:token forKey:(__bridge id)kSecValueData];
</code>

Dies alles funktioniert einwandfrei, wenn ich das Token für meine Netzwerkanrufe herausziehen muss, während die App aktiv ist. Es funktioniert für die Anmeldung von einem sauberen Start, sowie alle Netzwerkanrufe im gesamten. Der Fehler beginnt, wenn sich die App im Hintergrund befindet.

Denken Sie daran, dass dies nur sporadisch vorkommt und ich es noch nicht auf eine bestimmte iOS-Version oder ein bestimmtes iOS-Gerät festgelegt habe.

Der Benutzer löst einen Standort aus (Regionsüberwachung) und ich möchte den Server mit seinem Status aktualisieren. Ich versuche, das Token aus dem Schlüsselbund zu ziehen, genau wie bei jedem anderen Netzwerkanruf, und den Status zu aktualisieren. Für einige Benutzer ist der Wert jedoch gleich Null. Ohne kann ich das Netzwerkmaterial nicht aktualisieren. Warum sollte dies für die meisten funktionieren, aber nicht für einen kleinen Prozentsatz?

<code>KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"MyCustomIdentifier" accessGroup:nil];
NSString *token = [wrapper objectForKey:(__bridge id)kSecValueData];
</code>

Ich habe auf die Nicht-ARC-Version des Keychainwrappers zurückgegriffen, erhalte aber immer noch die gleichen Ergebnisse. Ich würde mich über ein Feedback hierzu freuen. Es ist nur ein kleiner Teil meiner Benutzer, aber es ist ein Problem, das ich gerne beheben und mir keine Sorgen machen möchte. Danke im Voraus.

Außerdem sind alle meine Hintergrundarbeiten in einer backgroundTask eingerichtet, um Zeitüberschreitungen zu vermeiden. Ich habe keine Probleme mit der Arbeit rund um den Schlüsselbund, aber ich lasse die Dinge nicht vorwärts gehen, bis mein Token gefüllt ist.

BEARBEITEN Ich habe mein Problem mit dem Schlüsselbund herausgefunden, der keine Werte aus dem Hintergrund abruft. Ich werde die Antwort unten posten und akzeptieren, da ich der Meinung bin, dass diese Frage später für andere von Nutzen sein kann.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage