SyncAdapter接收聊天消息吗?

时间:2020-10-28 23:33:44

标签: android websocket android-workmanager android-syncadapter android-intentservice

对于我的聊天应用程序,我正在寻找一种在后台运行时同步消息的好方法。

目前,我有一个网络套接字。当应用程序进入前台时,消息将同步。这使应用看起来很懒。像WhatsApp一样,我需要一种在应用程序进入前台之前使所有消息同步的方法。

我考虑了以下解决方案: 我设置了一个SyncAdapter,它由推送通知(“聊天xy的新消息”)触发。然后在SyncAdapter内获取新消息。

现在的问题是我不想为已写的每一行都连接(例如通过REST)。而且我也不想等待x分钟来捆绑新邮件。

正如我之前说过的,我已经有一个websocket,当应用程序进入前台时就可以建立它。将此代码移至SyncAadapter是个好主意吗?我可以在此处保持连接打开吗?如果我在X分钟内未收到任何消息,应该关闭它吗?我看到的唯一问题是用户是否无法接收推送消息。

如果有人知道著名的聊天应用程序,请告诉我这个方向。

1 个答案:

答案 0 :(得分:0)

Signal (secure messaging app)opensource。您可以看看他们如何实现现实世界的解决方案,以实现非常安全的聊天。

根据您的主要目标,您可以选择一个比较简单的实施方案。但是我认为您仍然需要几块:

  1. 当有新消息出现时,用于推送应用程序的推送系统
  2. 当应用程序处于后台时检索消息的方法
  3. 监视网络并在网络恢复正常后重试发送消息的系统

第一项可以用Firebase Cloud Messaging (FCM)解决,第二和第三项可以用WorkManager实现。

出于两个主要原因,我会避免在设备上保持开放连接的状态检查新消息:

  • 电池消耗
  • 背景限制
相关问题