2017-03-17 69 views
-1

幫助我設計一個更好的解決方案來同步單個應用程序用戶和服務器之間的聊天消息。如果應用程序脫機,我想將消息存儲在應用程序數據庫中,並在互聯網可用時將它們推送到服務器。如果同時有人向用戶發送消息,我想根據時間戳正確安排它們。但在這種情況下,時間篡改可靠嗎?如何在離線/在線模式下正確同步聊天消息?

+0

您可以選擇[SyncAdapter](https://developer.android.com/training/sync-adapters/creating-sync-adapter.html) – hrskrs

回答

1

是的時間戳是可靠的。但請確保在發送處於待處理隊列中的消息時不更新時間戳。

期待,這是建立一個廣播經理,因爲你已經有一個應用程序,數據庫的東西可以很容易的一種方式。

步驟1:創建一個BroadCastReceiver偵聽網絡改變

良好SO張貼同樣可以發現here其中 <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 用於檢測連接的變化。

步驟2:爲您的郵件創建INT國旗:

其中:假設:整數

0 - >未發送

1->發送

2->讀等。 。

所以每當用戶發送消息,請使用this的互聯網連接,如果互聯網是不是果店與您的應用程序,本地數據庫升旗>0別的崗位服務器

如果從服務器保存爲升旗> 1 0

第3步得到了肯定的回調再次別的:現在你對你的廣播接收機的onRecieve方法,檢查更改後的狀態是否是連接狀態(如在網絡連接建立時),然後從數據庫中將所有標記爲 - > 的消息從數據庫中提取出來,並在步驟2中再次進行驗證檢查後重新發送到服務器:確保你這次更新它們,而不是重新創建一個新條目!

這就是它!

+0

謝謝:),這很有幫助:) –

+0

我的榮幸。試試吧,讓我知道你是否需要任何進一步的幫助。此外,如果它的工作,將其標記爲答案,以便其他人可能會覺得它有用! – MadScientist