2014-12-02 60 views
1

我们正在为我们的Android应用程序使用推送通知。在1天内,我们看到如何解读Android应用程序的GCM响应代码?

-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 OK状态中,我们看到:

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

的区别是什么之间存储和发送?存储的消息是否意味着应用程序处于脱机状态,因此尚未发送?还有其他解释吗?

回答

1

这是官方Android GCM文档

“当第三方服务器发布消息到GCM和接收消息ID后面,但这并不意味着该消息已传送到设备,而是,这意味着它被接受了,接受后接受的信息取决于很多因素:

在最好的情况下,如果设备连接到GCM,屏幕就会打开,没有节流限制(参见节流),该消息将立即送达

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

注意:可以存储多少条消息而不折叠的限制。该限制目前为100.如果达到限制,则丢弃所有存储的消息。然后,当设备重新联机时,它会收到一条特殊消息,指出已达到限制。然后,应用程序可以处理情况正常,通常是通过请求完全同步。”

欲了解更多详情,请参阅http://developer.android.com/google/gcm/adv.html

+0

我们看到的多数信息在存储,所以当前在存储消息可以在设备唤醒后传送到发送器 – sharataka 2014-12-03 04:41:13

+0

@sharataka是的,如果设备在“time_to_live”期间醒来,它将收到所有存储的消息(如果存储的消息计数小于100),或者所有存储的消息将被丢弃,如果设备在“time_to_live”期间醒来。 – Samik 2014-12-04 07:01:35