Wie dauerhaft ist dieser Speicher, wenn meine App Daten lokal auf einem Telefon speichert? Ich werde die genaue Situation erläutern:
Ich baue eine App mit jQueryMobile und Phonegap. Es ist im Wesentlichen eine Browser-App, aber mit Phonegap kann ich sie unter anderem verpacken und in den App Stores verkaufen.
Phonegap bietet zwei Arten der Speicherung, wobei beide Funktionen native Funktionen von iOs, Android, Blackberry und einigen anderen Betriebssystemen harmonisieren: localStorage (primitive Schlüssel-Wert-Paare) und eine Web SQL-Datenbank. Sowohl localStorage als auch Web SQL sind Speicherformen, die zum Browser gehören. Allerdings kann ich nicht herausfinden, wie lange die Daten gespeichert bleiben, unter welchen Umständen sie gelöscht werden, unter welchen Umständen sie möglicherweise nicht verfügbar sind usw.
Wenn die App beispielsweise Daten mit localStorage oder Web SQL speichert und der Benutzer auf seinem Android zu einem anderen Standardbrowser wechselt, wird die App dann mit dem neuen Browser geöffnet. Bedeutet dies, dass die gespeicherten Daten nicht verfügbar sind?
Wenn der Benutzer die App ein Jahr lang nicht verwendet (was in meinem Fall ein realistisches und nicht unbedingt schlechtes Szenario ist), sind die Daten wie ein Cookie abgelaufen oder wurden möglicherweise von einer Flut von aus dem Speicher des Browsers verschoben Daten von anderen Apps?
Oder werden die Daten noch früher zerstört, z. B. wenn: - Benutzer eine andere Site im Browser besuchen - Browser manuell geschlossen wird - Browserprozess abgebrochen wird oder stirbt - usw.
Oder sind localStorage und Web SQL die Art von Speicher, die Sie nur löschen, wenn Sie (in Android) zu Einstellungen> Apps gehen und die mit der App verknüpften Benutzerdaten aktiv entfernen?
Vielen Dank für alle Einblicke. Es gibt nichts Informatives über das alte WWW.
Was passiert beim App-Update? Der lokale Speicher und der Webspeicher werden gelöscht oder bleiben sie erhalten?
quelle
Ab iOS 5.1 ist die Antwort von @ ghostCoder nicht mehr gültig. Apple hat beschlossen, den lokalen Speicherort in einen Cache-Ordner zu verschieben, der jederzeit geleert werden kann. Sie können diese Diskussion hier verfolgen:
Google Groups-Diskussion zu Localstorage
Auch dieser Blog erklärt das Problem ausführlicher:
http://www.marco.org/2011/10/13/ios5-caches-cleaning
Es ist möglich, Ihren lokalen Speicherort manuell auf einen sicheren Application_Home> / Documents- Speicherort zu verweisen . Um Ihren aktuellen lokalen Speicherort zu bestimmen, können Sie Folgendes verwenden:
Mit dem folgenden Code können Sie einen anderen Speicherort für Ihren lokalen Speicher festlegen:
quelle
Probieren Sie das NativeStorage-Plugin aus. https://www.npmjs.com/package/cordova-plugin-nativestorage .
Es hat Funktionen festgelegt, gesetzt und abgerufen, die Plattformfunktionen wie gemeinsame Einstellungen für Android und iOS NSUserDefaults implementieren, wodurch der Datenspeicher so sicher wie möglich wird.
quelle
Eine gute Lösung, die jetzt verfügbar ist, ist das Cordova Native Storage Plugin .
Es ermöglicht eine einfache, aber native dauerhafte Methode zum Speichern von Daten in iOS und Android, indem SharedPreferences in Android und NSDefault in iOS nativ implementiert werden, um die Zuverlässigkeit zu gewährleisten.
Verwendung:
quelle
Auf Android ist es standardmäßig ein permanenter Speicher. Auch wenn der Benutzer Ihre App aktualisiert, bleibt sie gleich.
Der Benutzer kann zu den Einstellungen gehen und den Cache und die Daten löschen. In diesem Fall oder wenn beispielsweise eine der Clean-It-Apps dies tut.
Selbst unter iOS ist es permanenter Speicher, aber Sie wissen nichts über das App-Update-Szenario. In der älteren Version (5.1) war dies jedoch nicht der Fall, und in Version 6+ wurde festgelegt, dass es durch eine Flagge dauerhaft gemacht werden kann, die von Cordova / Phonegap umgehend aktiviert wurde.
quelle
Ich kann nicht für andere Plattformen sprechen, aber auf meinem 4.1-Android-Gerät verwende ich localStorage, um einige Daten lokal mit jQuery Mobile zu speichern, und ich habe festgestellt, dass Android meinen Cache jede Woche oder so ohne mein Wissen löscht. Ich werde Web SQL ausprobieren und sehen, ob das besser ist.
quelle
In Bezug auf Leistung, Sicherheit und Zuverlässigkeit wäre es besser, die Verwendung von lokalem Speicher zu vermeiden und
Cordova-sqlite-storage
stattdessen zu verwenden.Einige Notizen:
localStorage
hat den Vorteil, einfach zu bedienen zu sein, funktioniert aber synchron. Dies bedeutet, dass der UI-Thread gesperrt und eine langsame Leistung verursacht werden kann.localStorage
hat eine begrenzte Menge an Speicher, in der Regel seine 5 MB.localStorage
kann vom Betriebssystem (android, ios) jederzeit gelöscht werden. Dies ist sehr ernst, wenn Sie sich für die Datenbeständigkeit interessieren.Auf der anderen Seite:
Cordova-sqlite-storage
ist asynchron und blockiert den UI-Thread nicht, speichert Ihre Daten auf dem nativen Gerätespeicher, die Speichermenge ist nicht begrenzt, das Betriebssystem löscht keine Ihrer Daten, es sei denn, Sie deinstallieren die App.quelle
Ich habe das online gefunden
ng-persist
Installieren
bower install ng-persist ngstorage --save
Injizieren Sie
$persist
in Ihren Controllerquelle