Ich mache eine Hybrid-App mit Zebrastreifen + Cordova mit PouchDB als Speicher. Das Problem ist, dass, wenn ich eine neue Version (auf Android) installieren Browser IndexedDB/WebSQL wird vollständig überschrieben, so dass alle Benutzerdaten ... gibt es eine Möglichkeit, eine Hybrid-App auf Android/iOS zu aktualisieren, die Benutzerdaten zu halten? dankcrosswalk + cordova indexedDB auf App-Update überschrieben
0
A
Antwort
2
IndexedDB ist an Ihrer Basis URL gebunden
wenn Sie App-Name oder der Stamm-URL (Inhalt src) in config.xml
ändern, werden Sie nicht in der Lage sein, die vorherige zuzugreifen.
Ich, zum einen, verwende die LocalForage-Bibliothek und Cordova SQLite-Plugin, um Browser-Bugs und Implementierungsdetails zu glätten. iOS können einige Kopfschmerzen verursachen,
in config.xml
Eintrag Mein Inhalt gewarnt:
<content src="index.html" />
Mein relevanten Plugin verwandte Einträge in config.xml
:
<plugin name="cordova-plugin-sqlite-2" spec="~1.0.4" />
<plugin name="cordova-plugin-crosswalk-webview" spec="~2.1.0">
<variable name="XWALK_VERSION" value="21+" />
<variable name="XWALK_LITEVERSION" value="xwalk_core_library_canary:17+" />
<variable name="XWALK_COMMANDLINE" value="--disable-pull-to-refresh-effect" />
<variable name="XWALK_MODE" value="embedded" />
<variable name="XWALK_MULTIPLEAPK" value="false" />
</plugin>
Hier ist meine DB init-Funktion in der Javascript-App (es gibt ein Versprechen zurück):
function initDB() {
let driver = [localforage.INDEXEDDB, localforage.WEBSQL]
//force shim
if (platform() === constants.PLATFORM_IOS) {
if (window.sqlitePlugin) {
//WEBSQL shim throgh sqlite2
window.openDatabase = window.sqlitePlugin.openDatabase
}
driver = localforage.WEBSQL
}
let opts = {
driver: driver,
name: constants.DBName + '_forage',
version: constants.appVersion,
size: 4980736
}
localforage.config(opts)
let stores = {
state: localforage.createInstance({storeName: 'state'}),
api_cache: localforage.createInstance({storeName: 'apiCache'})
}
const keys = Object.keys(stores)
let p = new Promise((res, rej)=> {
let r = 0;
function check() {
r++
if (r === keys.length) {
res(stores)
}
}
keys.forEach(k=>stores[k].ready(check))
})
return p
}
loc alforage finden Sie hier: https://github.com/localForage/localForage.git
Verwandte Themen
- 1. Crosswalk InAppBrowser in Cordova
- 2. cordova-plugin-crosswalk-webview auf iOS
- 3. Three.js Crosswalk Cordova verschwommene Objekte
- 4. Crosswalk Cordova Android Update-Projekt?
- 5. Crosswalk Integration Visual Studio Cordova
- 6. Crosswalk Cordova Android mehrere Datei wählen
- 7. Crosswalk Fehler auf Android Build in Cordova Projekt
- 8. Cordova Crosswalk Dateiauswahl keine App kann diesen Aktionsfehler ausführen
- 9. Wie Crosswalk von einem Cordova Projekt zu entfernen?
- 10. Cordova Crosswalk-Plugin - Verwendung mit Meteor 1.4.2.2 funktioniert nicht
- 11. Absturz beim Start am Port Cordova Crosswalk (Android)
- 12. Wie entfernt man Crosswalk ohne App-Daten zu verlieren?
- 13. Funktioniert navigator.webkitPersistentStorage.requestQuota auf IndexedDB?
- 14. Daten von Cordova von IndexedDB und webSQL synchronisieren
- 15. IndexedDB onupgradeeneded Ereignisziel ist null auf iOS
- 16. Externer Link mit crosswalk plugin
- 17. Crosswalk Cordova - js alert zeigt Blockzeichen auf der chinesischen Schnittstelle android
- 18. Crosswalk nur für Android hinzufügen <5.0
- 19. Speicherlimit für indexeddb auf IE10
- 20. Apache Cordova erlauben-Navigation überschrieben durch Allow-Intent
- 21. Crosswalk zur Arbeit mit Phonegap Build
- 22. Kann nicht iOS-Plattform auf Cordova
- 23. IndexedDB: TransactionInactiveError
- 24. cordova stürzt nach dem Hinzufügen cordova-plugin-Überweg-webview
- 25. Crosswalk Fehler über "Anfrage wurde aus Sicherheitsgründen abgelehnt"
- 26. Hot zum Erstellen von x86 und ARM-Apps ohne Crosswalk?
- 27. app-indexeddb-mirror mit Polymerfire
- 28. Indexeddb in Chrome auf IOS - wenn verfügbar?
- 29. indexedDB hat schlechte Leistung auf iOS?
- 30. IndexedDB Sortier-Index basiert auf ganzzahligen Wert
Aktualisieren Sie einfach die App oder deinstallieren/Neuinstallation? Ich habe seit fast einem Jahr eine App in Produktion und dieses Problem hatte ich noch nie. – RamblinRose
Die App ist noch nicht im Android Store, also installiere ich neu in der Entwicklungsphase. Wie funktioniert das Update? es ist nicht eine Art Neuinstallation? – user1658162