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