J'utilise AFNetworking avec NSURLCache. Les demandes sont créées avec NSURLRequestUseProtocolCachePolicy
. App reçoit des réponses avec en-têtes:Mode hors ligne utilisant NSURLCache
Etag = "1398684731";
Cache-Control = "public";
et tout fonctionne parfaitement. Mais maintenant je dois ajouter un mode hors ligne.
Comment ça devrait fonctionner:
- Si la connexion Internet est tout disponible devrait fonctionner comme d'habitude (application demande back-end pour les nouvelles données et si elle a différents
Etag
nouvelles données sont téléchargées siEtag
est le la même réponse mise en cache est utilisée). En l'absence de connexion Internet, la réponse mise en cache est utilisée.
Le problème est que les demandes en mode hors connexion échouent.
J'ai essayé de résoudre ceci en utilisant diverses options Cache-Control
mais il semble que cela ne fonctionne pas de cette façon.
J'ai trouvé une solution possible ici https://stackoverflow.com/a/15885318/3140927. Ça devrait marcher mais ce n'est pas très élégant et je pense que quelque chose aurait pu changer l'année dernière.
J'ai également découvert que "NSURLCache n'était pas conçu pour des scénarios hors ligne explicites et qu'il était conçu pour accélérer Safari et ne devait pas être utilisé pour les téléchargements manuels". Est-ce que SDURLCache sera meilleur pour mes buts?
Alors, quel pourrait être le meilleur moyen d'implémenter le mode hors-ligne?
Je pense que l'URL se résout votre problème, vous devez utiliser SDURLCache et AFNetworking puisque vous pouvez facilement modifier, ou, il vous ne voulez pas utiliser AFNetworking vous pouvez écrire votre propre classe NSURLConnection, mais puisque nous avons 'AFNetworking' et la solution, nous devrions passer à – iphonic