【发布时间】:2021-09-07 07:39:11
【问题描述】:
我是某种后端开发人员,不知道移动应用程序的工作原理。但我需要为移动聊天应用服务器提供架构。
我知道安卓应用程序使用谷歌服务来接收来自 firebase 的推送通知,所以我们不需要在无限循环中运行自己的应用程序并在服务器上轮询新数据。
这对于推送通知来说是完美的,但 Firebase 通知正文限制为 4KB,不适合大消息。
所以我只能看到一个实现:
- Google 服务轮询 FCM(前 GCM)通知
- 接收一些类似信号的通知
- 根据此通知,我的应用程序会转到服务器并下载新消息
- 更新本地聊天数据
- 显示本地生成的新消息通知
这种方式看起来相当复杂,所以我不认为这是唯一可能(且正确)的方式。
另一种方法是保持每次打开 websocket 会话或手动轮询服务器。但是这两个操作应该会消耗很多电池。
那么现代聊天应用程序如何在关闭和设备屏幕关闭的情况下保持同步?
【问题讨论】:
-
您应该检查每个平台的背景限制。 Android有Doze mode和iOS has their own background restrictions
-
你是铁杆。简而言之,我们可能会使用 XMPP / socket / WebRTC / 数据库同步 + 远程通知。 (通知不可靠,仅供用户使用)
-
@Horst
socket和WebRTC必须保持会话打开,这会耗尽电池电量。database syncing + remote notification→ 你是这个意思吗? developer.intersoftsolutions.com/display/crosslight/… 在我的问题中,这非常接近于 5 步实现。 -
您可以为此使用 Firebase 实时数据库
-
@rzlvmp 我的意思是(XMPP/socket/WebRTC/数据库同步)+远程通知。我们不会使用链接方式更新消息,因为用户可以屏蔽通知功能。
标签: android ios chat messaging