可靠地接收消息是任何 Android 消息体验中最关键的功能。在实现消息传递时,还需要考虑系统健康状况和电池续航时间。本文档将指导您了解关键策略和工具,以确保您的 Android 应用始终如一、高效且可靠地接收消息。
消息传递机制
可靠消息传递的最佳方法取决于您的应用的具体需求。请考虑以下因素:
- 当前实时需求
- 消息频率
- 电池限制
前台实时消息传递
当您的应用处于前台时,用户通常期望获得大量信息,并希望了解以下内容:
- 被消息的目标用户是否在其设备上?
- 他们是否正在输入?
- 他们是否已阅读消息?
支持此类实时数据交换的典型方法是使用客户端-服务器协议,例如 WebSockets。WebSockets 支持您的应用和服务器之间持续的双向通信。OKHTTP 库 包含一个 WebSocket 协议的实现,您可以在 Android 客户端中使用它。
Firebase 实时数据库 提供了一个预构建的后端和客户端前端,可以代表您处理此类通信。它在内部使用 WebSockets 实现其客户端和服务器之间的实时通信。
后台实时消息传递
当您的应用不再处于前台时,避免执行对系统健康状况和电池续航时间产生不利影响的操作至关重要。由于可靠地传递消息通知仍然很重要,我们建议使用 Firebase Cloud Messaging (FCM)。
FCM 是一种跨平台消息传递解决方案,可以高效地将通知和数据消息发送到 Android(和其他)设备。对于拥有 Google 服务的设备,它利用 Android 传输层 (ATL),以便您的应用在不再运行时也能收到更改通知。消息传递的及时性取决于设备的状态、消息的优先级以及您的应用是否因休眠或应用待机受到限制。
增强消息传递可靠性
为了使您的消息传递更加稳健,请考虑以下策略
- 使用
WorkManager
定期唤醒您的应用 以检查是否有新消息,前提是设备具有网络连接,并且(理想情况下)设备已连接到充电器。 - 使用诸如Firebase 控制台和来自 FCM 数据 API 的 Android SDK 传递指标等工具,深入了解 FCM 传递情况。
- 使用日志记录机制和工具(例如Firebase Crashlytics)来监控和解决消息传递问题。