我以这种方式使用GCM:
服务器告诉客户端,通过GCM,"嘿,您需要从服务器下载内容,立即执行HTTP请求"
情况:
问题:
客户端将连续3次发出HTTP请求
第一个请求将下载所有新的东西,第二个和第三个请求将只是浪费电池。
这种情况是否有标准的最佳解决方案?
答案 0 :(得分:1)
是的,有。如果所有3条消息都具有相同的折叠密钥,则当客户端联机时,只会传递其中一条消息。
来自docs:
当第三方服务器向GCM发布消息并收到消息时 ID返回,并不意味着消息已经发送到 装置。相反,它意味着它被接受交付。什么 在被接受之后发生的消息取决于许多因素。
在最佳情况下,如果设备连接到GCM,则 屏幕已打开,并且没有限制限制(请参阅 限制),消息将立即发送。
如果设备已连接但处于空闲状态,则仍会显示该消息 除非delay_while_idle标志设置为true,否则立即发送。 否则,它将存储在GCM服务器中,直到设备为止 苏醒。而这就是collapse_key标志起作用的地方:如果有的话 已经是具有相同折叠键(和注册ID)的消息 存储并等待传递,旧邮件将被丢弃 新消息将取而代之(即旧消息将成为 被新人瘫倒了)。但是,如果未设置折叠键, 新旧邮件都存储起来以供将来发送。 可折叠消息也称为发送到同步消息。