我们正在为我们的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"
存储和发送有什么区别?存储的邮件是否意味着应用程序处于离线状态,因此尚未发送?还有其他解释吗?
答案 0 :(得分:1)
这是来自官方的Android GCM文档
“当第三方服务器向GCM发送消息并收回消息ID时,并不意味着该消息已经传递给设备。相反,这意味着它已被接受交付。会发生什么接受后的信息取决于很多因素。
在最佳情况下,如果设备已连接到GCM,屏幕已打开,并且没有限制限制(请参阅限制),则会立即传递消息。
如果设备已连接但处于空闲状态,则除非delay_while_idle
标志设置为true
,否则仍会立即传递消息。否则,它将存储在GCM服务器中,直到设备处于唤醒状态。这就是collapse_key
标志发挥作用的地方:如果已经存储了具有相同折叠密钥(和注册ID)的消息并等待传递,则旧消息将被丢弃并且新消息将取代它(也就是说,旧消息将被新消息折叠)。但是,如果未设置折叠键,则会存储新旧邮件以供将来传递。可折叠消息也称为发送到同步消息。
注意:如果没有折叠,可以存储的邮件数量有限制。该限制当前为100.如果达到限制,则丢弃所有存储的消息。然后,当设备重新联机时,它会收到一条特殊消息,指示已达到限制。然后,应用程序可以正常处理这种情况,通常是请求完全同步。“