不可折叠消息和可折叠消息

“不可折叠”消息表示每一条消息都将被传递至设备。不可折叠消息能传递一些有用内容。与无内容的“ping”之类的可折叠消息不同,不可折叠消息能传递一些有用内容至移动应用,从而联系服务器以获取数据。

聊天消息或关键消息都是典型的不可折叠消息。对于 Android,在不折叠的情况下,最多可存储 100 条消息。达到此限值后,所有存储的消息都将被舍弃。设备在重新联网后将收到一条特殊消息,提示已达到此上限。 之后,应用可以正常处理该状况,一般情况下会请求与应用服务器进行一次完全同步。

“可折叠消息”在还未被传递至设备的情况下可能会被新消息替代。

可折叠消息的常见使用情形包括告知移动应用从服务器同步数据。为用户更新最新比分的体育应用就属于这种消息。 只有最新的消息是相关的。

要在 Android 上将一条消息标记为可折叠,请在消息载荷中加入 collapse_key 参数。默认情况下,折叠键是在 Firebase 控制台中注册的应用软件包名称。FCM 服务器可以为每台设备同时存储 4 条不同的可折叠消息,每一条都含有不同的折叠键。如果超出此限值,FCM 将仅保留 4 个折叠键,具体保留哪几个不一定。

默认情况下,没有载荷的主题消息是可折叠消息。通知消息都可折叠,并且会忽略 collapse_key 参数。

我应该使用哪种消息?

从性能的角度来看,可折叠消息是首选选项,但前提是您的应用不需要使用不可折叠消息。但是,如果您使用可折叠消息,则须切记:FCM 仅允许 FCM 在任意指定时间内为每个注册令牌使用最多四个不同的折叠键。

使用情景 如何发送
不可折叠 每一条消息对客户端应用都很重要,都需要传递。 默认情况下,除了通知消息外的所有消息都是不可折叠消息。
可折叠 当新消息使得相关的旧消息对客户端应用不再有用时,FCM 将替换掉旧消息。例如:过期的通知消息。 在消息请求中设置适当的参数: