我目前正在重新開發一個應用程序,通過從網站獲取原始數據而不是官方API來更新它的內部SQLite數據庫。保持Firebase實時數據庫中的數據始終保持同步
由於這很容易出錯,我想將數據處理從客戶端移到後端服務器。 這個想法是讓服務器每天多次在服務器上運行 - 類似於之前的客戶端行爲 - 並將數據存儲在Firebase實時數據庫中。然後,所有客戶端不再需要自行處理數據,而是從Firebase DB請求已解析的數據。
我只是想知道什麼是保持數據同步的最佳方法。 我提出了兩個想法,但由於我對Firebase不太熟悉,所以不知道最好。
對於我可以想象的在一些節點上使用keepSynced()
和setPersistenceEnabled()
來保持客戶端上的數據同步。 但是我不確定這是否會在應用程序處於後臺時使數據保持最新狀態。我擔心這種方法的電池和網絡使用情況。 第三點是同時連接的數量,我用這種方法使每個客戶端都會一直連接,對嗎?
第二種方法是使用FCM在其感興趣的節點之一發生變化時通知客戶端,例如,使用Firebase雲端函數來偵聽事件並觸發消息。 然後客戶端goOnline()
再次與數據庫同步並且goOffline()
。這將避免大量的連接以及減少電池和網絡使用。 但我不確定如何在離線時保留設備上的所有數據? 我不想使用SQLite數據庫來保存設備上的數據。 是否setPersistenceEnabled()
足以在設備上保存特定數量的數據庫備註?
或者是兩種方式混合使用?在需要的節點上設置keepSynced()
和setPersistenceEnabled()
,並根據雲消息設置goOnline()
/goOffline()
?
任何幫助或建議基於自己的expiriences歡迎!