FCM:数据消息传递真的不如通知消息传递可靠吗?

leo*_*sse 6 android firebase firebase-cloud-messaging

问题

我遇到过一些声音,指出与通知消息相比,FCM 数据消息传递的一致性较差。有谁有直接经验或可以向我指出探索该问题的资源吗?或者通知消息只是 Firebase SDK 自动处理的可折叠的高优先级数据消息?

该问题不考虑强制退出应用程序的情况。在这种情况下,两种类型的消息都不会被传递(据我所知)。

背景

我正在为推送服务提供商编写一个新的 Android SDK(类似于 OneSignal)。默认情况下,SDK 应处理推送通知的显示,客户端应用程序也可以选择自行处理传入的推送。

实际的交付当然是由 Firebase 云消息传递(在运行 Play 服务的设备上)完成的。因此,FCM 上有两种类型的消息可供选择:数据消息通知消息。

由于数据消息始终由注册者处理FirebaseMessagingService(假设有效负载中没有notification密钥),因此这应该是 SDK 的发展方向。[参见文档] 到目前为止,我还没有能够产生数据消息未传递的情况(前台或后台)。

Ani*_*har 0

通过在消息中设置优先级,我们可以反映发送情况。

您有两个选项可以为 Android 上的下游消息分配传输优先级:正常优先级和高优先级。普通和高优先级消息的传递工作如下:

正常优先级。这是数据消息的默认优先级。当设备未休眠时,会立即传送普通优先级消息。当设备处于休眠模式时,可能会延迟传送以节省电池,直到设备退出休眠模式。对于时间敏感度较低的消息,例如新电子邮件通知、保持 UI 同步或在后台同步应用程序数据,请选择正常传送优先级。

当在 Android 上收到请求应用程序后台数据同步的正常优先级消息时,您可以使用WorkManager安排一个任务,以便在网络可用时处理该任务。

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

请参阅FireBase 文档中的设置和管理消息优先级主题。有关更多详细信息,您可以更喜欢此链接

显示通知,您可以选择此链接

提前祝你好运。