FCM:数据消息传递是否真的比通知消息传递不可靠? FCM: 数据消息的传递是否真的比通知消息的传递不可靠?

6

问题

我发现有些声音声称,与通知消息相比,FCM数据消息的传递不够稳定。有没有人有直接经验或可以指向探讨此问题的资源?或者通知消息只是一个可折叠的高优先级数据消息,Firebase SDK会自动处理它吗?

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

背景

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

实际的传递当然是由Firebase Cloud Messaging(在运行Play Services的设备上)完成的。因此,在FCM上有两种消息可供选择:数据 vs 通知消息。

由于数据消息由注册的FirebaseMessagingService一贯处理(只要载荷中没有notification关键字),这应该是SDK的最佳选择。[请参阅文档]到目前为止,我尚未能够产生任何情况下未传递数据消息的情况(前台或后台)。

1个回答

0

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

在 Android 上,您有两个选项来为下游消息分配交付优先级:普通和高优先级。普通和高优先级消息的交付方式如下:

普通优先级。 这是 数据消息 的默认优先级。当设备未休眠时,普通优先级消息会立即传递。当设备处于 Doze 模式 时,为了节省电池电量,可能会延迟传递。对于一些不太时间敏感的消息,例如新邮件通知、保持 UI 同步或在后台同步应用程序数据等,请选择普通交付优先级。

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

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

请参阅 FireBase 文档中的 设置和管理消息优先级 主题。如需更多详细信息,请参考此 link

对于显示通知,您可以参考此 link

提前祝您好运。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接