crosswalk+cordova indexedDB 在应用程序更新时被覆盖
crosswalk+cordova indexedDB overwritten on app update
我正在使用 pouchDB 作为存储,使用 crosswalk+cordova 制作一个混合应用程序。问题是,当我安装新版本(在 android 上)时,浏览器 indexedDB/webSQL 被完全覆盖,因此所有用户数据...有什么方法可以在 android/ios 上更新混合应用程序保留用户数据?
谢谢
IndexedDB 绑定到您的基础 URL
如果您在 config.xml
中更改应用名称或基础 URL(内容来源),您将无法访问之前的应用。
一方面,我正在使用 localforage 库和 cordova sqlite 插件来消除浏览器错误和实现细节。 iOS 可能会引起一些头痛,请注意
我在 config.xml
中的内容条目:
<content src="index.html" />
我的相关插件相关条目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>
这是我在 Javascript 应用程序中的数据库初始化函数(它 returns 一个承诺):
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
}
localforage 可以在这里找到:https://github.com/localForage/localForage.git
我正在使用 pouchDB 作为存储,使用 crosswalk+cordova 制作一个混合应用程序。问题是,当我安装新版本(在 android 上)时,浏览器 indexedDB/webSQL 被完全覆盖,因此所有用户数据...有什么方法可以在 android/ios 上更新混合应用程序保留用户数据? 谢谢
IndexedDB 绑定到您的基础 URL
如果您在 config.xml
中更改应用名称或基础 URL(内容来源),您将无法访问之前的应用。
一方面,我正在使用 localforage 库和 cordova sqlite 插件来消除浏览器错误和实现细节。 iOS 可能会引起一些头痛,请注意
我在 config.xml
中的内容条目:
<content src="index.html" />
我的相关插件相关条目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>
这是我在 Javascript 应用程序中的数据库初始化函数(它 returns 一个承诺):
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
}
localforage 可以在这里找到:https://github.com/localForage/localForage.git