Attualmente sto memorizzando il nome utente (email) e un hash salato dell'email e della password nella KeyChain iOS. Sto usando la versione ARC trovata here.KeyChain iOS che non recupera i valori dallo sfondo
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];
Questo funziona perfettamente quando è necessario estrarre il token per le chiamate di rete mentre l'app è attiva. Funziona per l'accesso da una partenza pulita, così come tutte le chiamate di rete in tutto. Il problema inizia quando l'app è in background.
Ricordare che ciò accade solo sporadicamente e non è ancora necessario collegarlo a una specifica versione o dispositivo iOS.
L'utente scatta una posizione (monitoraggio della regione) e voglio aggiornare il server con il loro stato. Cerco di estrarre il token dal portachiavi, nello stesso modo in cui lo faccio per ogni altra chiamata di rete, e aggiornare lo stato. Ma per alcuni utenti, il valore è nullo. Senza di esso, non posso aggiornare la roba di rete. Perché questo dovrebbe funzionare per la maggior parte, ma non per una piccola percentuale?
KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"MyCustomIdentifier" accessGroup:nil];
NSString *token = [wrapper objectForKey:(__bridge id)kSecValueData];
sono tornato alla versione non-ARC del keychainwrapper, ma ho ancora ottenere gli stessi risultati. Apprezzerei qualsiasi feedback su questo. È solo una piccola parte dei miei utenti, ma è un problema che vorrei risolvere e non preoccuparmi. Grazie in anticipo.
Inoltre, tutto il mio lavoro in background è impostato in backgroundTask per impedire che le cose vadano fuori tempo. Non ho alcun problema con il lavoro che circonda il portachiavi, ma non lascio andare avanti finché il mio token non è pieno.
EDIT Ho scoperto il mio problema con il portachiavi che non recuperava i valori dallo sfondo. Pubblicherò la risposta qui sotto e la accetterò poiché ritengo che questa domanda possa diventare preziosa per gli altri in seguito.
Grazie! Questo è stato molto utile. –
Contento di aver potuto aiutare. Mi ha lasciato perplesso per molto tempo. –
Grazie mille per aver condiviso questo! – pxlshpr