2014-09-02 5 views
14

Ich entwickle eine Hybrid-App (nur für iOS und Android) mit PhoneGap/Cordova und möchte HTML5 localStorage verwenden, um Inhalte für den Offline-Zugriff zu speichern.iOS 7 webview und localStorage Persistenz

http://caniuse.com/#search=localStorage sagt - "In iOS 5 & 6 localStorage Daten werden an einem Ort gespeichert, die gelegentlich durch das Betriebssystem gelöscht werden kann."

  1. Wie ist die Situation mit einer iOS-7 (und höher) webview, in welchen Fällen local bestehen bleiben, oder raus gelöscht (durch das Betriebssystem oder den Benutzer)?

  2. Wird ein Update für die App localStorage löschen?

  3. Was ist mit dem Löschen des Browserverlaufs in Safari - wird das auch für die Webansicht gelten?

  4. Muss ich mich sorgen (oder kann ich sogar kontrollieren), wo auf dem Fils-System die localStorage erstellt wird. Ich verstehe, dass es nicht auf iCloud gesichert werden sollte.


bekam ich ein Gerät (iPad) und die Überprüfung des Dateisystems ich, dass localstorage-Datei in ~/Library ist/Caches innerhalb der App-Sandbox, siehe unten Bild.

Aus der Dokumentation:

https://developer.apple.com/icloud/documentation/data-storage/index.html Daten, die wieder oder regenerierten heruntergeladen werden kann, sollte in/Library/Caches Verzeichnis gespeichert werden. Zu den Beispielen für Dateien, die Sie in das Verzeichnis Caches aufnehmen sollten, gehören Datenbankcachedateien und herunterladbare Inhalte, wie sie beispielsweise von Magazinen, Zeitungen und Kartenanwendungen verwendet werden.

ich einfach mache diese Daten zu setzen:

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

enter image description here

+0

Mögliches Duplikat. schauen Sie sich http://StackOverflow.com/a/39097517/6237235 an – Iceman

Antwort

2

Wenn Sie cordova verwenden, wurde das Problem vor langer Zeit festgelegt, auch für iOS 5 und iOS 6. shouldn Sie Wenn Sie die neueste Version von Cordova verwenden, machen Sie sich keine Sorgen.

+1

Hallo, vielen Dank - haben Sie bitte einen Link zu weiteren Informationen? Kann ich nur localStorage.setItem ('foo', 'FOO value'); oder brauche ich ein plugin etc? – KevInSol

+0

Ich habe keine Links, ich folge nur Cordova Entwicklung und lese das vor langer Zeit. es sollte auf dem cordova oder phonegap blog sein, wo sie jede Versionsänderung veröffentlichen, aber ich erinnere mich nicht an die Version wo das behoben wurde. Oder Sie können eine Suche auf der Cordova Jira – jcesarmobile

+1

Ich habe keinen Link, aber ich * habe * sah den Code mehrmals durch, und ich kann überprüfen, dass dieses Problem behoben ist (und seit einiger Zeit). Verwenden Sie localStorage nach Belieben. (Wenn Sie auf WP7/8 abzielen, bleibe ich bei 'setItem', aber ansonsten können Sie mit' localStorage.foo = "FOO value" ') darauf verweisen. Denken Sie daran, dass hier eine Größenbeschränkung besteht, also gehen Sie nicht zu verrückt. Das Löschen des Mobile Safari-Caches wirkt sich auch nicht auf Ihre App aus (Sandbox) und bleibt auch bei einem Update erhalten (aber * nicht * ein Löschen + Neuinstallieren). –

3

Wenn das Problem mit Cordova-iOS v4 weiterhin auftritt, versuchen Sie das NativeStorage-Plugin. https://www.npmjs.com/package/cordova-plugin-nativestorage.

Es hat Funktionen setzen, setzen und erhalten, die Plattform-Funktionen wie Android gemeinsame Einstellungen und iOS NSUserDefaults, die Daten speichern so sicher wie erlaubt zu implementieren.

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>); 
0

Wie andere erwähnt haben Ich denke, die beste Wahl das NativeStorage Plugin zu verwenden ist:

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

Um Ihre Fragen zu beantworten:

  1. Die localStorage Daten werden in einem gehalten Cache-Verzeichnis im Dateisystem, und der Cache wird häufig vom Betriebssystem bereinigt (z. B. wenn das Gerät wenig Speicherplatz auf der Festplatte hat).
  2. Nein, nicht automatisch (aber vielleicht wegen der Gründe in 1, oben).
  3. Nein, sie sind getrennt.
  4. Nein, das ist mir leider nicht bekannt.