根據[Cordova Storage IndexedDB](https://cordova.apache.org/docs/en/7.x/cordova/storage/storage.html#indexeddb)文檔,存儲空間大約爲5MB(Disadvantages段落的最後一點)。如何爲Android上的Cordova應用程序的IndexedDB授予無限制的持久性存儲權限?
5MB爲DATABASE,嚴重嗎?對我而言,我需要爲我的應用程序提供更多的存儲空間,因此我必須在沒有其他選擇的情況下打破監獄。
第1輪:詢問更多存儲配額。
navigator.webkitPersistentStorage.requestQuota(quota, function(granted) {
window.requestFileSystem(window.PERSISTENT, granted, cbSucc, cbErr);
}, cbErr);
- 的 '授予' 送花兒給人零不管是什麼 '配額' 的。
- Android webview上的'window'對象中沒有requestFileSystem()函數。
- 基於(https://stackoverflow.com/a/42355894):它只適用於沙盒文件系統。也許這不是我所需要的。
第2輪:實現推送通知服務工作器,它將自動授予持久存儲權限。
navigator.serviceWorker.register('sw.js')
.then(function(swNotify) {
swNotify.pushManager.subscribe({
userVisibleOnly : true,
applicationServerKey : pubKey
});
});
- 服務工作者註冊。
- Android webview上沒有PushManager,因此無法執行pushManager.subscribe()。
- 這適用於除了webview以外的桌面和Android版Chrome。
第3輪:詢問持久存儲權限。
navigator.storage.persist().then(...);
- 的堅持()函數總是返回而不要求用戶授予權限假。
- WRITE_EXTERNAL_STORAGE權限已被請求和授予。
環境:
- 機器人:7.0(通過Android模擬器)
- web視圖:58.0.3029.83
- 科爾多瓦:科爾多瓦7.0.1
- 的Andorid平臺:6.2.3
我仍然是5MB監獄的囚徒,我還能做些什麼呢?
謝謝戴夫,但我認爲用RDB替換NoSQL可能不是一個好理想。它必須從系統架構開始重做。 –
Lawnchair爲您提供了一個鍵/值存儲界面(類似於IndexedDB)。實際的底層數據庫可能是一個RDB,但這是不相關的,因爲它的接口被抽象爲非關係型。 – DaveAlden
再次感謝Dave和我會尋找cordova-sqlite-storage插件。 –