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