设置和管理消息优先级

Android 中的下行消息传递优先级有两种:普通优先级和高优先级。普通优先级和高优先级的消息传递方式如下:

  • 普通优先级。这是数据消息的默认优先级。当设备未休眠时,普通优先级消息会被立即传递。当设备处于低电耗模式时,此类消息可能会被延迟传递以节省电量,直到设备退出低电耗模式。如果是对时间不太敏感的消息(例如新电子邮件通知、使界面保持同步或在后台同步应用数据),建议您选择普通传递优先级。

    如果在 Android 上收到请求同步应用的后台数据的普通优先级消息,则您可以使用 WorkManager 安排一项任务,以便在网络可用时处理该请求。

  • 高优先级。FCM 会立即尝试传递高优先级消息,允许 FCM 在必要时唤醒休眠设备并运行一些有限的处理(包括非常有限的网络访问)。高优先级消息通常应该会导致用户与您的应用或其通知进行互动。

在 Android 设备上使用高优先级消息

Android 设备上的高优先级消息适用于对时间敏感的用户可见内容,因此应该会生成面向用户的通知。如果 FCM 检测到一种模式,在这种模式下,消息不会生成面向用户的通知,那么系统可能会将您的消息优先级降低为普通优先级。FCM 在确定是否降低消息优先级时,会使用 7 天的消息行为;它会针对您应用的每个实例单独做出这一决定。如果在响应高优先级消息时,以对用户可见的方式显示通知,那么系统不会降低今后的高优先级消息的优先级。无论通知是由 FCM SDK 通过通知消息显示,还是由开发者生成的通知通过数据消息显示,这一点都适用。

在 Android 上衡量消息优先级降低情况

  • 个别消息。在传递时,您可以将通过 getPriority() 获得的传递优先级与通过 getOriginalPriority() 获得的原始优先级进行比较,来确定是否降低个别消息的优先级。

  • 所有消息。FCM Aggregate Delivery Data API 可以报告您发送给 Android 的所有消息中,有多少百分比的消息被降低优先级。有些消息可能会从汇总数据报告中省略,但总体上,您应该可以通过这些报告从全局角度了解优先级降低率。如需了解详情以及获取用于查询 API 的示例代码,请参阅我们的汇总传送数据一文。您也可以通过 API Explorer 进行探索。

问题排查