2016-06-28 96 views
0

我正在開發一個應用程序,使用運行cordova的離子框架,並且需要我在用戶設備(Android/iOS)本地存儲(例如SD ),我無法使用localStorage離子框架保存它,因爲它將數據保存在緩存中。用Ionicframework創建本地存儲(設備,而不是緩存)

在其他人中,我需要我的數據在設備上堅持很長一段時間。

我還有什麼其他解決方案?

+1

http://www.html5rocks.com/en/tutorials/offline/storage/可能會有所幫助。 – Phonolog

+0

@Phonolog這樣我仍然會在瀏覽器上使用緩存,但它仍然緩存:/ – xRed

+1

這幾乎是對不同的可能性持久化數據的概述,如果你想寫入文件系統/ sd卡的用戶,請參閱[本節](http://www.html5rocks.com/en/tutorials/offline/storage/#file-access)。 – Phonolog

回答

1

HTML5 網絡存儲(即localStorage)並不總是一個不好的選擇。這是一個廣泛支持的現成的關鍵值存儲。並且不,它不會在存儲器中存儲,正好是,即localStorage中的數據不會到期也不會被隨機擦除。但是是一個有限和低優先級的存儲,從平臺到平臺的具體細節各不相同。

這就是說,我們有以下更可靠的替代品,這依賴於你正在嘗試存儲:

  1. 本地的SQLite - 作爲科爾多瓦的應用程序,你的應用程序可以訪問創建和通過第三方SQLite Plugin使用原生SQLite數據庫,就像原生移動應用程序一樣。從JavaScript開始,您可以像訪問Cordova之外的WebSQL一樣訪問數據。離子/ ngCordova幫助這裏提供實用的包裝圍繞SQLite的插件:$ cordovaSQLite

  2. 本地文件系統 - 作爲科爾多瓦的應用程序,你的應用程序可以訪問本地文件存儲(也,在Android上的SD卡上,如果這是用戶存儲應用程序的容器的地方)通過標準File Plugin。此外,離子提供它周圍的公用包裝與許多有用的功能:$ cordovaFile(檢查ngcordova.com/docs/plugins/)

IndexedDB的也是這裏值得一提。不是原生的移動解決方案,但是這個noSQL存儲正在迅速成爲大型可靠瀏覽器端存儲的標準,標誌着WebSQL已經過時。但是,iOS網絡視圖對IndexedDB提供了錯誤和不完整的支持(caniuse.com/#search=indexeddb)

根據您要存儲的數據是什麼來選擇您的解決方案。爲了存儲應用程序數據,我使用Native SQLite(用於結構化數據)和localStorage(用於關鍵值數據,主要是UI首選項)的組合。爲了存儲資源,總是有文件系統。

+0

如果您只是想要一些與localStorage類似的鍵值對數據,您可以創建自己的文件並通讀它。如果數據旨在成爲您的應用程序的首選項,那麼還會有一個[Preferences插件](http://ngcordova.com/docs/plugins/preferences/)提供類似的鍵值存儲。 – Gaurav

+0

注意:如果您希望數據在卸載應用程序後仍然存在,恐怕您的選項有限。我只能想象如果你使用文件插件或首選項插件將數據存儲在公共目錄中應用程序容器外的文件中(請查看上述鏈接以瞭解具體操作方式)。其他一切註定要與應用程序一起擦除:-) – Gaurav