2017-12-18 263 views
0

我想創建一個POS應用程序,但由於某種原因,應用程序應該在沒有互聯網連接時工作(以及稍後在連接到互聯網時進行同步)。我唯一想到的方法是在本地數據庫和服務器之間進行同步,但我沒有想法如何或最好的方法來做到這一點。我對此有幾個問題:同步本地數據庫(Sqlite)與服務器數據庫android

  1. 是否可以使用FCM雲消息傳遞來執行此操作?我的意思是客戶端A告訴FCM數據已經改變,然後FCM通知幾個客戶端(電話)在後臺執行同步數據庫,而無需用戶(電話擁有者)確認(自動)。

  2. 還是唯一的辦法就是用這個方法https://github.com/codepath/android_guides/wiki/Server-Synchronization-(SyncAdapter)?如果是這樣,我們多久可以同步數據庫本地服務器?每3分鐘同步會好嗎?

+0

每3分鐘同步一次不會太好,那會太頻繁了。您可以使用PushNotification(Point 1)和備份點2作爲w埃爾。當設備關閉或沒有互聯網連接時,第2點將有所幫助。 –

+0

當設備上沒有互聯網連接時,FCM消息將不會被髮送/接收 – theFunkyEngineer

+1

[Android應用程序和網絡服務器之間的數據同步]可能重複(https://stackoverflow.com/questions/10829371/sync-data-between- Android的應用程序和網絡服務器) – theFunkyEngineer

回答

1

是的,使用FCM實時數據庫爲此。 FCM在應用程序內部以及雲上爲您管理數據。因此,如果您將一些數據寫入JSON樹中,但您沒有互聯網連接,則一旦連接可用,數據就會被推送到雲中。 這些文檔清楚地說明了這一點(閱讀關於'寫入離線數據'的最後一節:https://firebase.google.com/docs/database/android/read-and-write

此外,客戶端脫機時添加到數據庫的任何數據都將在客戶端上線後發送 - 因爲實時數據庫保持數據的存儲

每隔3分鐘使用一次服務器同步是不可行的 - 並且很可能您的應用會被系統在某個點或另一個點殺死。使用FCM和雲功能以及JobSchedulers得到最好的結果

相關問題