Comment empêcher la suppression de la database HTML 5 lors de l'utilisation de Phonegap et iOS 5.1

Je crée une application de style de quiz pour iOS en utilisant phonegap. L'application permet aux users de créer puis prendre les quiz.

Actuellement, j'utilise une database HTML 5 en utilisant les API phonegap pour stocker datatables de test et de résultats. Je suis préoccupé par le fait que la database peut maintenant être supprimée par iOS 5.1 lorsque le stockage de l'appareil est plein.

Y at-il de toute façon à marquer le dossier de cache webkit où la database est stockée afin qu'il ne soit jamais supprimé? Si ce n'est pas possible, existe-t-il des suggestions pour un autre moyen de stocker datatables qui seront toujours persistantes.

Il y a un correctif pour les deux problèmes avec le stockage Webkit et iOS 5.1

  1. Stockage déplacé de / Webkit vers / Cache
  2. Le stockage n'est pas ajusté à la structure de dossier mise à jour sur une mise à jour d'application sous iOS 5.1 (Bug WebKit)

https://issues.apache.org/jira/browse/CB-330

Cette solution semble plus sûre que de simplement changer l'location des données Webkit appelant une API privée. Pendant que l'application est en cours d'exécution, les locations de stockage Webkit sont utilisés. Lors de la reprise ou de la fermeture de toutes datatables, il est sauvegardé dans le dossier des documents. Les horodatages garantissent que l'ancienne sauvegarde ne peut pas replace datatables de stockage les plus récentes (si l'application tombe en panne …).

Le meilleur: Les users qui sont sur une version iOS plus ancienne en utilisant une application avec ce correctif, ne subiront pas de dommages perdus en cas de mises à jour iOS. C'est pourquoi on ne devrait pas attendre …

Oui, c'est dommage que Apple l'ait fait dans iOS5.1

Il est possible de changer l'location des données WebKit appelant une API privée. Vous devriez être en mesure de définir l'location dans un dossier sécurisé comme Documents. Je n'ai pas encore testé cette solution, mais regardez ce post: Comment activer le stockage local dans mon application WebKit?

L'équipe de Phonegap travaille également sur ce problème: https://issues.apache.org/jira/browse/CB-330

Antoher façon est d'utiliser SQLite (même que WebSQL) avec un plugin phonegap. Ce plugin enregistre la database dans le dossier Document, ce qui signifie que la database n'est pas supprimée et est enregistrée par iCloud.

Voici le plugin phonegap Native SQLite: https://github.com/davibe/Phonegap-SQLitePlugin En ce qui concerne ce plugin, c'est un peu mais plus lent que WebSQL dans certains cas, et il y a quelques différences entre l'API WebSQL, mais voici un adaptateur: https://gist.github.com/2009518

Vous devez également migrer l'ancien file WebSQL db (stocké dans le directory Library / WebKit ou Caches) vers le dossier Document. Voici un code pour le faire: https://gist.github.com/2009491

Et si datatables sont importantes, vous devez l'save sur un server. J'ai écrit une petite lib pour synchroniser la database SQlite sur un server: https://github.com/orbitaloop/WebSqlSync

Au lieu d'utiliser une database html5, je voudrais envoyer / recevoir datatables via ajax (sur un server distant, avec php et mysql), de preference crypté (et base64_encoded).