2017-03-17 81 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