如何解释Android应用的GCM响应代码?

时间:2014-12-02 23:18:20

标签: android google-cloud-messaging

我们正在为我们的Android应用使用推送通知。在第一天,我们正在看

-39 messages with the GCM response code of HTTP 200 - OK and 
-16 messages with the GCM response code of HTTP 200 - Not Registered

"未注册"与我们为应用程序卸载的数量有关吗?

此外,在状态为39的状态下,我们会看到:

-30 are "Stored"
-9 are "Sent"

存储和发送有什么区别?存储的邮件是否意味着应用程序处于离线状态,因此尚未发送?还有其他解释吗?

1 个答案:

答案 0 :(得分:1)

这是来自官方的Android GCM文档

“当第三方服务器向GCM发送消息并收回消息ID时,并不意味着该消息已经传递给设备。相反,这意味着它已被接受交付。会发生什么接受后的信息取决于很多因素。

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

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

注意:如果没有折叠,可以存储的邮件数量有限制。该限制当前为100.如果达到限制,则丢弃所有存储的消息。然后,当设备重新联机时,它会收到一条特殊消息,指示已达到限制。然后,应用程序可以正常处理这种情况,通常是请求完全同步。“

有关详细信息,请参阅http://developer.android.com/google/gcm/adv.html