2016-09-20 62 views
13

我有一個應用程序,其中的主要功能是「離線使用」。Firebase離線存儲高級 - 手動同步和進度信息

我們在我們的服務器上生成一個SQLite數據庫,我們提供了一個API供下載。每次數據庫發生變化時,用戶都必須重新下載完整的SQLite數據庫(目前爲50MB,並且及時增長)。

我們嘗試改進Update-Method,用戶只需下載差異SQL文件,但存在一些問題(性能,損壞的數據庫等)。

現在Google發佈了Firebase,我認爲現在是用Firebase系統替換SQLite系統的好時機。

但我有一些想法:

  • 我可以下載離線使用的全部火力地堡數據庫(而不是在一個App-緩存,在持久性存儲)?
  • 我可以跟蹤脫機同步的進度,併爲用戶提供選項,如果他想現在或以後同步嗎?
  • 我可以只限制同步到WIFI嗎?
  • 我可以提供捆綁數據庫 - 安裝應用程序後,我已經可以查詢離線的Firebase數據了嗎?

我要的是:在我的應用程序中使用火力地堡只同步的數據庫 - 但執行所有操作下線。如果Firebase不是爲了使用此功能而設計的,那麼有什麼好的選擇?

然後我有另一個主要問題就火力地堡:

  • JSON存儲是偉大的 - 但這樣一來,我們不關心獨特的結構,一定要在這個注意力始終插入正確的數據集?

回答

4

我可以下載離線使用的全部火力地堡數據庫(而不是在 一個App-緩存,在持久性存儲)?

是的,您可以通過將磁盤持久性設置爲true來完成此操作。您只需引用數據庫中的最高級別,並且firebase將返回所有子節點。 https://firebase.google.com/docs/database/android/offline-capabilities

我可以跟蹤離線同步的進展情況,並給用戶 選項,如果他想現在或以後同步?

我從來沒有試圖顯示實際進度,但是當您從Firebase檢索數據時,總會有onDataChange方法在您成功檢索到數據時調用。 https://firebase.google.com/docs/database/android/retrieve-data#read_data_once

我可以限制同步到WIFI嗎?

我還沒有見過火力地堡文檔中這個選項,但我不相信這將是非常難以實現的

我可以提供一個捆綁數據庫 - 安裝該應用程序,我可以 後已經離線查詢 - Firebase數據?

一旦安裝了應用程序,您就需要從Firebase獲取數據。您也可以在理論上初次運行應用時嘗試在沒有任何網絡的情況下寫入Firebase數據庫,然後可以在本地獲得該數據,但是當用戶獲得網絡連接時,您需要小心,然後可能會覆蓋此數據Firebase數據庫中的數據。 How do I cache Firebase data for offline usage?

+0

感謝您的回答!你是否也知道關於數據結構的最後一個問題,如果我下載整個數據庫並且如果我能夠檢測到數據庫是否與在線版本不同,那麼可以爲我提供更多關於下載的詳細信息。 – brokedid

+0

有什麼消息嗎?還是一樣,還是現在我們可以做得更好? – brokedid