问题
我遇到一些声音说,与通知消息相比,FCM数据消息传递的一致性较差。有没有人有直接的经验,或者可以向我介绍探索这个问题的资源?还是通知消息只是Firebase SDK自动处理的可折叠、高优先级数据消息?
-
https://stackoverflow.com/a/49998176
-
当应用程序处于后台时,在Android中未收到FCM数据消息
-
关于FCM';s通知消息和数据消息类型,具有更好的接收率
此问题不考虑强制退出应用程序的情况。在这种情况下,这两种类型的消息都不会被传递(据我所知)。
背景
我正在为推送服务提供商编写一个新的Android SDK(类似于OneSignal)。默认情况下,SDK应该处理推送通知的显示,客户端应用程序可以自己处理传入的推送。
实际交付当然是由Firebase云消息(在运行Play Services的设备上)完成的。因此,FCM上有两种类型的消息可供选择:数据与通知消息。
由于数据消息始终由注册的FirebaseMessagingService
处理(前提是有效负载中没有notification
密钥),因此这应该是SDK的做法。[参见文档]到目前为止,我还无法产生数据消息未送达的情况(前台或后台)。
通过在Message中设置优先级,我们可以反映交付情况。
在Android上,您有两个为下游消息分配传递优先级的选项:正常优先级和高优先级。正常和高优先级消息的传递方式如下:
正常优先级这是数据消息的默认优先级。当设备未处于睡眠状态时,会立即发送正常优先级消息。当设备处于休眠模式时,可能会延迟交付以节省电池,直到设备退出休眠。对于时间敏感度较低的消息,如新电子邮件通知、保持UI同步或在后台同步应用程序数据,请选择正常传递优先级。
当在Android上收到请求应用程序后台数据同步的正常优先级消息时,您可以使用WorkManager安排任务,以便在网络可用时进行处理。
高优先级FCM尝试立即传递高优先级消息,允许FCM在必要时唤醒休眠设备,并运行一些有限的处理(包括非常有限的网络访问)。高优先级消息通常会导致用户与您的应用程序或其通知进行交互。
请参阅FireBase文档中的设置和管理消息优先级主题。有关更多详细信息,您可以更喜欢此链接
对于显示通知您可以首选此链接
好运在即。