如何检测 GCM 是不是“折叠”了一条消息?

Posted

技术标签:

【中文标题】如何检测 GCM 是不是“折叠”了一条消息?【英文标题】:How to detect if GCM "collapsed" a message?如何检测 GCM 是否“折叠”了一条消息? 【发布时间】:2014-05-11 10:37:04 【问题描述】:

GCM 消息的接收者如何检测消息是否已被 GCM 服务器使用 collapse_key “折叠”?有没有可用的反馈?还是最佳实践?

我们的目标是为“send_to_sync”模式创建一个最佳(最便宜)的实现,其中客户端仅在丢失消息时“同步”。

示例: 假设一组 10 台设备通过 GCM 消息相互更新其确切位置。只有最新的更新是相关的,所以最好让每个用户都有自己的折叠键。由于使用 GCM 时有 4 个折叠键的限制,您不能为每个用户使用折叠键,因此您必须创建自己的系统并使用“send_to_sync”模式。 如果每条“send_to_sync”消息都包含最新更新 + 指示是否有任何丢失的消息,那就太好了,如果没有,则不需要同步。

【问题讨论】:

【参考方案1】:

接收者可以通过在有效负载中包含某种计数器来检测消息已被折叠。每次服务器向设备发送 GCM 消息时,它都会将该计数增加一。当设备收到一条消息时,它会将这个计数与它收到的先前计数进行比较。如果计数增长超过 1,则需要同步。

【讨论】:

我喜欢简单的客户端解决方案,这将是我的方向。谢谢!

以上是关于如何检测 GCM 是不是“折叠”了一条消息?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 GCM 中使用折叠键

当手机离线时,GCM 会存储消息列表或仅存储最后一条消息,就像 APNS 一样?

GCM 会在短时间内发送复制主题消息,而 gcm 会延迟发送吗?

Firebase 云消息传递 - GCM 规范 ID 是不是仍然需要?

GCM消息被覆盖

GCM CCS 上游消息是不是强制重新连接到 GCM 网络?