如何检测 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 会存储消息列表或仅存储最后一条消息,就像 APNS 一样?
GCM 会在短时间内发送复制主题消息,而 gcm 会延迟发送吗?