如何在离线/在线模式下正确同步聊天消息?

时间:2017-03-17 07:16:16

标签: android messaging

帮助我设计一个更好的解决方案,在单个应用用户和服务器之间同步聊天消息。如果应用程序脱机,我想将消息存储在应用程序数据库中,并在互联网可用时将其推送到服务器。如果有人向用户发送消息,我想根据时间戳正确安排它们。但在这种情况下,时间夯是否可靠?

1 个答案:

答案 0 :(得分:1)

是的时间戳是可靠的。但请确保在发送待处理队列中的邮件时不更新时间戳。

期待这一点的方法是创建一个广播管理器,因为你已经拥有了app-db,所以事情很简单。

第1步:创建BroadCastReceiver以监听网络更改

可以找到一个好的SO帖子here <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 用于检测连接变化。

第2步:为您的消息创建int标志:

其中:assume:int

0 - &gt;未发送的

1→发送

2→阅读等...

因此,每当用户发送消息时,请使用this检查互联网连接,如果互联网无法存储到您的应用本地数据库,请使用flag-&gt; 0其他信息发布到服务器< / p>

如果你从服务器得到一个肯定的回调,请将它保存为flag-&gt; 1否则再次为0。

步骤3:现在,在广播接收器的onRecieve方法中,检查更改后的状态是否为已连接状态(如建立网络连接),然后从数据库中提取所有使用标志保存的消息 - 大于0 并重新将它们重新发送到服务器,并在步骤2中再次进行验证检查:只需确保这次更新它们,而不是重新创建新条目!

那应该是它!