Android 中的下行消息传递优先级有两种:普通优先级和高优先级。普通优先级和高优先级的消息传递方式如下:
普通优先级。这是数据消息的默认优先级。当设备未休眠时,普通优先级消息会被立即传递。当设备处于低电耗模式时,此类消息可能会被延迟传递以节省电量,直到设备退出低电耗模式。如果是对时间不太敏感的消息(例如新电子邮件通知、使界面保持同步或在后台同步应用数据),建议您选择普通传递优先级。
如果在 Android 上收到请求同步应用的后台数据的普通优先级消息,则您可以使用 WorkManager 安排一项任务,以便在网络可用时处理该请求。
高优先级。FCM 会立即尝试传递高优先级消息,允许 FCM 在必要时唤醒休眠设备并运行一些有限的处理(包括非常有限的网络访问)。高优先级消息通常应该会导致用户与您的应用或其通知进行互动。
在 Android 设备上使用高优先级消息
Android 设备上的高优先级消息适用于对时间敏感的用户可见内容,因此应该会生成面向用户的通知。如果 FCM 检测到一种模式,在这种模式下,消息不会生成面向用户的通知,那么系统可能会将您的消息优先级降低为普通优先级。FCM 在确定是否降低消息优先级时,会使用 7 天的消息行为;它会针对您应用的每个实例单独做出这一决定。如果在响应高优先级消息时,以对用户可见的方式显示通知,那么系统不会降低今后的高优先级消息的优先级。无论通知是由 FCM SDK 通过通知消息显示,还是由开发者生成的通知通过数据消息显示,这一点都适用。
在 Android 上衡量消息优先级降低情况
个别消息。在传递时,您可以将通过 getPriority() 获得的传递优先级与通过 getOriginalPriority() 获得的原始优先级进行比较,来确定是否降低个别消息的优先级。
所有消息。FCM Aggregate Delivery Data API 可以报告您发送给 Android 的所有消息中,有多少百分比的消息被降低优先级。有些消息可能会从汇总数据报告中省略,但总体上,您应该可以通过这些报告从全局角度了解优先级降低率。如需了解详情以及获取用于查询 API 的示例代码,请参阅我们的汇总传送数据一文。您也可以通过 API Explorer 进行探索。
问题排查
确保应用实例启用了通知。如果用户已为您的应用停用通知权限,系统将无法发布任何通知,因此会降低您的消息的优先级。您应 验证通知是否已启用,然后再向应用实例发送高优先级消息。
发布通知之前,请勿拨打住宅电话号码。由于一小部分 Android 移动用户使用的是高延迟网络,因此请避免在显示通知之前打开与服务器的连接。在允许的处理时间结束之前回调服务器可能会让使用高延迟网络的用户面临风险。 请在 FCM 消息中包含通知内容并立即显示。如果您需要同步 Android 上的其他应用内内容,可以使用 WorkManager 安排一项任务,在后台进行同步。