web-dev-qa-db-de.com

iOS 7-Webansicht und localStorage-Persistenz

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.

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

  1. Wie ist die Situation mit einem Webview für iOS 7 (und später)? In welchen Fällen wird localStorage beibehalten oder gelöscht (vom Betriebssystem oder vom Benutzer)?

  2. Wird für ein Update der App localStorage gelöscht? 

  3. Wie sieht es mit dem Löschen des Browserverlaufs auf Safari aus - wird dies auch für den Webview gelten?

  4. Muss ich mir Sorgen machen (oder kann ich sogar kontrollieren), wo auf dem Dateisystem localStorage erstellt wird? Ich verstehe, dass es nicht auf iCloud gesichert werden sollte.


Ich habe ein Gerät (iPad) und überprüfe das Dateisystem. Ich sehe, dass sich die localStorage-Datei in ~/Library/Caches in der App-Sandbox befindet, siehe Abbildung unten.

Aus den Dokumenten:

https://developer.Apple.com/icloud/documentation/data-storage/index.html Daten, die erneut heruntergeladen oder regeneriert werden können, sollten in/Library/Caches gespeichert werden Verzeichnis. Zu den Dateien, die Sie im Caches-Verzeichnis ablegen sollten, gehören Datenbank-Cache-Dateien und herunterladbare Inhalte, z. B. solche, die von Zeitschriften-, Zeitungs- und Kartenanwendungen verwendet werden.  

Ich mache einfach das, um Daten zu setzen:

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

enter image description here

15
KevInSol

Wenn Sie Cordova verwenden, wurde dieses Problem vor langer Zeit behoben, auch für iOS 5 und iOS 6. Sie sollten sich keine Sorgen machen, ob Sie die neueste Version von Cordova verwenden.

1
jcesarmobile

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

Es hat Funktionen festgelegt, eingesetzt und abgerufen, die Plattformfunktionen implementieren, wie beispielsweise Android-Voreinstellungen und iOS NSUserDefaults, wodurch der Datenspeicher so sicher wie möglich ist.

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

Am besten verwenden Sie das NativeStorage-Plugin:

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

Um Ihre Fragen zu beantworten:

  1. Die localStorage-Daten werden in einem Cache-Verzeichnis im Dateisystem abgelegt, und der Cache wird häufig vom Betriebssystem geleert (z. B. wenn das Gerät über wenig Festplattenspeicher verfügt).
  2. Nein, durch das Aktualisieren der App wird der lokale Speicher nicht gelöscht.
  3. Nein, der lokale Safari-Speicher und der lokale Webview-Speicher sind getrennt.
  4. Nein, Sie können nicht steuern, wo im Dateisystem es gespeichert ist.
1
sandstrom