web-dev-qa-db-fra.com

webview iOS 7 et persistance du stockage local

Je développe une application hybride (pour iOS et Android uniquement) à l'aide de PhoneGap/Cordova et souhaite utiliser HTML5 localStorage pour stocker du contenu pour un accès hors connexion.

http://caniuse.com/#search=localStorage indique - "Dans iOS 5 & 6, les données locales sont stockées dans un emplacement qui peut parfois être effacé par le système d'exploitation."

  1. Quelle est la situation avec une vue Web iOS 7 (et ultérieure), dans quels cas le stockage localStorage persistera-t-il ou sera-t-il effacé (par le système d'exploitation ou l'utilisateur)?

  2. Une mise à jour de l'application supprimera-t-elle le stockage local? 

  3. Qu'en est-il de la suppression de l'historique du navigateur par l'utilisateur sur Safari - cela s'appliquera-t-il également à la visualisation Web?

  4. Dois-je m'inquiéter (ou puis-je même contrôler) où le stockage local est créé sur le système fils? Je comprends qu'il ne devrait pas être sauvegardé sur iCloud.


J'ai un appareil (iPad) et en vérifiant le système de fichiers. Je constate que le fichier localStorage se trouve dans ~/Bibliothèque/Caches dans le sandbox de l'application, voir l'image ci-dessous.

De la docs:

https://developer.Apple.com/icloud/documentation/data-storage/index.html Les données pouvant être téléchargées à nouveau ou régénérées doivent être stockées dans/Library/Caches annuaire. Les exemples de fichiers que vous devez placer dans le répertoire Caches incluent les fichiers de cache de base de données et le contenu téléchargeable, tel que celui utilisé par les applications de magazine, de journal et de carte.  

Je fais simplement ceci pour définir des données:

  localStorage.setItem('foo','this is the FOO value');
  localStorage.setItem('bar','and this is the BAR value');

enter image description here

15
KevInSol

Si vous utilisez cordova, ce problème a été résolu il y a longtemps, même pour iOS 5 et iOS 6. Vous ne devriez pas vous inquiéter si vous utilisez la dernière version de cordova.

1
jcesarmobile

Si vous rencontrez toujours le problème avec Cordova-iOS v4, essayez le plug-in NativeStorage. https://www.npmjs.com/package/cordova-plugin-nativestorage .

Il a défini, mis en place et récupéré des fonctions qui implémentent des fonctionnalités de plate-forme, telles que les préférences partagées Android et iOS NSUserDefaults, qui rendent le magasin de données aussi sûr que possible.

cordova plugin add cordova-plugin-nativestorage

NativeStorage.putObject("reference_to_value",<object>, <success-callback>, <error-callback>);

NativeStorage.getObject("reference_to_value",<success-callback>, <error-callback>);
4
user4466709

Votre meilleur pari est d'utiliser le plugin NativeStorage:

https://www.npmjs.com/package/cordova-plugin-nativestorage

Pour répondre à vos questions:

  1. Les données localStorage sont conservées dans un répertoire de cache du système de fichiers et le cache nettoie fréquemment le système d'exploitation (par exemple lorsque le périphérique manque d'espace disque).
  2. Non, la mise à jour de l'application n'effacera pas le stockage local.
  3. Non, le stockage local Safari et le stockage local Webview sont séparés.
  4. Non, vous ne pouvez pas contrôler où le système de fichiers est stocké.
1
sandstrom