触发客户端执行HTTP请求的GCM消息

时间:2014-05-02 02:19:45

标签: android push-notification google-cloud-messaging

我以这种方式使用GCM:

服务器告诉客户端,通过GCM,"嘿,您需要从服务器下载内容,立即执行HTTP请求"

情况:

  1. 客户端离线(没有互联网连接)(下午2:00)
  2. 服务器向客户端发送GCM消息(下午3:00)
  3. 服务器向客户端发送GCM消息(下午5:00)
  4. 服务器向客户端发送GCM消息(下午5:15)
  5. 客户端现已联机(已连接互联网)(下午6:00),客户端收到这3条GCM消息
  6. 问题:
    客户端将连续3次发出HTTP请求 第一个请求将下载所有新的东西,第二个和第三个请求将只是浪费电池。

    这种情况是否有标准的最佳解决方案?

1 个答案:

答案 0 :(得分:1)

是的,有。如果所有3条消息都具有相同的折叠密钥,则当客户端联机时,只会传递其中一条消息。

来自docs

  

当第三方服务器向GCM发布消息并收到消息时   ID返回,并不意味着消息已经发送到   装置。相反,它意味着它被接受交付。什么   在被接受之后发生的消息取决于许多因素。

     

在最佳情况下,如果设备连接到GCM,则   屏幕已打开,并且没有限制限制(请参阅   限制),消息将立即发送。

     

如果设备已连接但处于空闲状态,则仍会显示该消息   除非delay_while_idle标志设置为true,否则立即发送。   否则,它将存储在GCM服务器中,直到设备为止   苏醒。而这就是collapse_key标志起作用的地方:如果有的话   已经是具有相同折叠键(和注册ID)的消息   存储并等待传递,旧邮件将被丢弃   新消息将取而代之(即旧消息将成为   被新人瘫倒了)。但是,如果未设置折叠键,   新旧邮件都存储起来以供将来发送。   可折叠消息也称为发送到同步消息。