Spero che qualcuno possa far luce su alcune cose che ho cercato ma che non ha fatto molti progressi.Come utilizzare NSURLCache per restituire le risposte dell'API memorizzate nella cache quando si è offline (App per iOS)
Mi piacerebbe sfruttare NSURLCache per restituire le risposte memorizzate nella cache per le chiamate API che faccio all'interno di un'app iOS. Quando il dispositivo è online, desidero restituire la risposta memorizzata nella cache se è abbastanza recente, altrimenti preleva da remoto. Quando il dispositivo è offline, desidero restituire immediatamente la risposta memorizzata nella cache (se presente) indipendentemente dall'età.
Sto usando AFNetworking
. Le chiamate API che sto facendo sono su un server che controllo. Il protocollo è HTTPS. L'intestazione di risposta Cache-Control
è attualmente "max-age=0, public"
. Al momento non sto impostando le intestazioni delle richieste relative alla cache (dovrei?). Ho impostato il criterio di cache della richiesta su NSURLRequestReturnCacheDataDontLoad
quando è offline e utilizzo il valore predefinito NSURLRequestUseProtocolCachePolicy
quando online. E posso vedere le richieste e le loro risposte nel default Cache.db
su disco. Tuttavia quando Sono offline tutte le richieste non riescono (non risposte cache (nonostante che sembra essere stato memorizzato nella cache) vengono utilizzati/restituito
Per http://nshipster.com/nsurlcache/ ho inizializzare un sharedURLCache
in didFinishLaunchingWithOptions
e impostare l'AFNetworking setCacheResponse
blocco a qualcosa di simile.:
NSMutableDictionary *mutableUserInfo = [[cachedResponse userInfo] mutableCopy]; NSMutableData *mutableData = [[cachedResponse data] mutableCopy]; NSURLCacheStoragePolicy storagePolicy = NSURLCacheStorageAllowed; return [[NSCachedURLResponse alloc] initWithResponse:[cachedResponse response] data:mutableData userInfo:mutableUserInfo storagePolicy:storagePolicy];
ho letto questi e altri messaggi su tema:
http://petersteinberger.com/blog/2012/nsurlcache-uses-a-disk-cache-as-of-ios5/ http://blackpixel.com/blog/2012/05/caching-and-nsurlconnection.html
Mi chiedo se qualcuno là fuori ha raggiunto con successo questa funzionalità prima di utilizzare lo standard NSURLCache
(interessato anche a casi di successo che coinvolgono SDURLCache
ma Peter S. dice che la cache del disco iOS5 è supportata quindi SDURLCache
non è più necessario, cioè I ' mi piace usare la cache integrata predefinita).
Grazie in anticipo!
appare questo è stato fissato in iOS 7. c'è qualche co ufficiale conferma da Apple che questo bug è stato risolto? – hpique