iDe*_*ode 7 android firebase flutter firebase-cloud-messaging
文件说:
不可折叠:每条消息对客户端应用程序都很重要并且需要传递。除通知消息外,所有消息默认都是不可折叠的。
这意味着数据消息是不可折叠的并且被认为是重要的。然而,文档还说:
当您的应用程序处于后台或终止时,设备会将纯数据消息视为低优先级,并将被忽略。
那么,它们实际上是否重要?如果重要,那么例如,如果应用程序在后台,它们为什么会被忽略。
文件说:
除通知消息外,所有消息默认都是不可折叠的。
我通过 Firebase 通知编辑器发送两条通知消息,并且是可折叠的,旧消息应该折叠(或被最新消息替换),但我可以看到这两条通知都显示在 Android 和 iOS 上。
那么,为什么通知消息被认为是“可折叠的”呢?
非常有趣的问题!
看起来这些文档令人困惑,并且在某些地方有些矛盾。
我做了一些挖掘,以下要点应该可以消除您的一些疑虑:
文档中的官方定义:
可折叠消息是如果尚未传送到设备则可以被新消息替换的消息。
让我们用一些细节来扩展上面的定义:
可折叠消息概念仅适用于消息已排队但尚未传递给接收方的情况。(消息排队的原因可能是因为接收者可能无法访问互联网,或者他们的手机已关闭等。) 这意味着在消息排队的情况下,如果消息折叠,您可能只会收到接收方重新上线后收到的最新消息。
让我们举个例子:接收者的互联网连接关闭,我们发送了三条消息,A,B和C。现在,当接收者打开他的互联网时,他只会收到一条消息,C,如果消息是可折叠的。
但是,需要注意的是,如果接收方已经收到一条消息,比如说消息 A,那么当您发送 B 时,它不会替换已经发送给接收方的消息 A。
不完全正确。
当我们从文档中阅读这一行时,我们相信通知消息始终是可折叠的。
除通知消息外,所有消息默认都是不可折叠的。
但是,当我尝试从 Firebase 控制台通过通知编辑器发送多条通知消息(在发送之前关闭接收器设备上的互联网)时,我发现当重新上线时,我会收到我发送的所有消息。这让我们相信通知消息是不可折叠的!
但这只是故事的一半!
当您通过其他方式(例如使用 FCM Post API)发送通知消息时,您只能从队列中获取最新消息。这意味着通知消息是可折叠的!
结论:通知消息在通过通知编辑器发送时是不可折叠的,其余情况下,它们是可折叠的。(文档没有在任何地方明确说明这一点)
显而易见的答案似乎是肯定的!但这不是正确的答案。
重要消息应作为不可折叠消息发送。但是,不可折叠并不等于重要的消息!
原因?
这个解释有两个方面,
因此,如果消息可以传递给接收者,那么可折叠/不可折叠的概念就出现了。消息能否按时送达与消息优先级、操作系统限制等完全是不同的领域。
| 归档时间: |
|
| 查看次数: |
1141 次 |
| 最近记录: |