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