【发布时间】:2017-06-14 18:39:16
【问题描述】:
我正在通过 Firebase 通知控制台向用户 Android 设备发送通知,我注意到即使我在用户设备离线时发送 10 个不同的通知,一旦用户上线,她/他将收到全部 10 个。
但在 Firebase 文档中指出:
FCM 允许应用服务器在任何给定时间最多使用四个不同的折叠键。换句话说,FCM 连接服务器可以同时为每个设备存储四个不同的可折叠发送同步消息,每个消息具有不同的折叠密钥。如果超过此数量,FCM 仅保留四个折叠键,不保证保留哪些。
那么用户不应该只收到 4 个通知吗?我错过了什么吗? (我没有扩展FirebaseMessagingService,我将通知处理留给SDK)
更新:如果您未在 Firebase 通知控制台中指定折叠键,则似乎为通知分配了一个隐式折叠键,即 包名称应用程序的强>。一旦我通过点击通知启动应用程序,我已经通过检查getIntent().getExtras() 键集的所有键/值对来测试它。事实上,我得到了一个带有包名称值的 collapse_key 键,即使我没有指定一个。
更新 2:我尝试通过扩展 FirebaseMessagingService 来处理通知,以便在应用程序处于前台时接收来自通知控制台的消息。我收到通知消息并手动向用户显示通知。你猜怎么着。折叠键效果很好!即使我使用相同的折叠键发送多个通知,我也会收到一个通知。 但是这显然只在应用程序处于前台时才会发生,因为 Firebase SDK 在应用程序处于后台时不会调用onMessageReceived(),而是它自己处理通知。这是否意味着这是 Firebase SDK 的错误? (因为该问题仅在 SDK 显示通知时发生)
所以问题仍然存在,为什么我会收到所有 10 个通知,因为每个通知都有相同的折叠键?可能是 FCM 错误?
【问题讨论】:
-
嗯...如果您的通知没有折叠键,那么它们就不会折叠。
-
嗯,这就是我的想法,但后来我读到了这个:stackoverflow.com/questions/39655543/… 声明通知具有隐式折叠键。
-
出于测试目的,我只是将 Wi-Fi 关闭 1 或 2 分钟。我还没想通,如果我不指定折叠键,有隐含的吗?或者没有折叠键,意味着所有通知都在不折叠的情况下传递?
-
感谢您的 cmets,@AL 我测试了 1 小时的间隔,但仍然相同。 -Ashutosh 我通过 Firebase 控制台(通知作曲家)发送通知,而不添加除默认键之外的任何其他键。 -Kato 大约一周前,我做了一些测试,我肯定使用了超过 4 个折叠键,但从那以后我没有指定一个。这会破坏通知吗?
-
嗯。我可能会在最后尝试一下,看看是否可以复制它。与此同时,您是否也可以尝试从您的应用服务器发送
notification消息,或者只使用Postman or cURL 看看有什么不同?
标签: firebase firebase-cloud-messaging firebase-notifications