Я делаю гибридное приложение с пешеходным переходом + кордорой, используя pouchDB в качестве хранилища. проблема в том, что при установке новой версии (на android) браузера indexedDB/webSQL полностью перезаписывается, поэтому все пользовательские данные ... есть ли способ обновить гибридное приложение на android/ios, сохраняющее пользовательские данные? благодаряcrosswalk + cordova indexedDB, перезаписываемый при обновлении приложения
0
A
ответ
2
IndexedDB привязан к базовому URL
если изменить название приложения или базовый URL (содержание Src) в config.xml
, вы не сможете получить доступ к предыдущему.
Я, например, использую библиотеку localforage и плагин corova 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>
Вот моя функция DB инициализации в приложении Javascript (это возвращает обещание):
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 можно найти здесь: https://github.com/localForage/localForage.git
Смежные вопросы
- 1. Исключение Dart при обновлении IndexedDB
- 2. Crosswalk Собственный интерфейс - cordova-plugin-crosswalk-webview
- 3. Appium crosswalk-cordova application
- 4. Crosswalk-lite with cordova
- 5. Cordova Crosswalk + Framework7: Ошибки пикселей
- 6. Интеграция CrossWalk LITE с Cordova
- 7. Использование crosswalk standlone без cordova
- 8. Редактируемый вход данных DataGridView, перезаписываемый при обновлении другой ячейки
- 9. Держите IndexedDB существующие данные ObjectStore при обновлении
- 10. Использование нескольких соединений при обновлении версии IndexedDB
- 11. Включите Cookies в Crosswalk Cordova для Android-приложения
- 12. Crosswalk Cordova Android multi file select
- 13. Гибридное приложение с Crosswalk + Cordova + Eclipse
- 14. Захват событий Crosswalk Cordova для веб-просмотра
- 15. OpenTok for Cordova with Crosswalk throws alert()
- 16. Crosswalk with Cordova 4.0.0 существующее приложение?
- 17. Ionic/Cordova не работает с Crosswalk
- 18. Следует ли закрывать IndexedDB, кроме как при обновлении?
- 19. Приложение Cordova перенесено в Crosswalk crashes
- 20. Вставить crosswalk runtime внутри cordova apk
- 21. cordova-plugin-crosswalk-webview на iOS
- 22. Sinch - приложение для телефона Cordova - Crosswalk iOS
- 23. gap_init: 2 с Cordova и Crosswalk
- 24. Как удалить Crosswalk из проекта Cordova?
- 25. Crosswalk Cordova - Задержка нажатия не зафиксирована ontouchstart
- 26. Сбой при обновлении приложения
- 27. CrossWalk с ProGuard
- 28. Плагин Cordova Crosswalk с ошибкой «К сожалению, {appName} остановлен».
- 29. Плагин Crosswalk не устанавливается
- 30. Собственная платформа Cordova Crosswalk не распознается игровым магазином
Вы просто обновляете приложение или удаляете/переустанавливаете? У меня есть приложение в производстве почти год, и у меня никогда не было этой проблемы. – RamblinRose
приложение еще не находится в магазине Android, поэтому я переустанавливаю его на этапе разработки. как работает обновление? это не переустановка? – user1658162