gcm和第三方应用服务器之间的流量控制

时间:2014-04-11 12:54:41

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

我是Android开发的新手,我正在开发推送通知应用程序,并尝试概述GCM如何为服务器端和客户端工作

我坚持使用google android开发者网站上 Flow Control 中提供的一个概念。

http://developer.android.com/google/gcm/ccs.html#flow

他们给出了类似的东西:

  

发送到CCS的每条消息都会收到ACK或NACK响应。   考虑未收到这些响应之一的消息   悬而未决。如果待处理的邮件计数达到1000,则为第三方应用程序   服务器应该停止发送新消息并等待CCS   确认一些现有的未决消息。

     

相反,为避免第三方应用服务器过载,CCS会   如果有太多未确认的消息,则停止发送。因此,   第三方应用服务器应该"确认"收到的上游消息   客户端应用程序通过CCS,尽快维护一个   传入消息的持续流动。上述待处理的消息   限制不适用于这些ACK。即使待处理的消息计数   达到1000,第三方应用服务器应继续发送ACK   对于从CCS收到的消息,以避免阻止新的传递   上游消息。

     

ACK仅在一个连接的上下文中有效。如果   在确认消息(第三方应用程序)之前关闭连接   服务器应该等待CCS重新发送上游消息   再次确认。类似地,所有未决消息的ACK / NACK   在连接关闭之前,没有收到CCS   再次发送。

我的问题是

1>>这是第三方应用服务器和gcm服务器之间的流程吗?

2>>为什么第三方服务器只能发送1000个请求?如果发出更多请求会发生什么?

3>>什么时候gcm会发送ACK和NACK?从某种意义上说,当向第三方服务器发出gcm请求时,gcm会检查设备是否已注册(抛出注册ID),或者是否确认将消息发送到已注册的ID设备,然后发送确认第三方服务器?

4>>服务器何时获得NACK?从某种意义上说,在什么情况下它会收到NACK?

提前致谢!

1 个答案:

答案 0 :(得分:3)

按顺序:

  1. 是(更确切地说,它是CCS与XMPP之间的第三方之间的流程)

  2. 1000是避免CCS泛滥的门槛。这是一个速率限制,消息数量不受限制(并且免费...)。

  3. 每次发送有效请求(消息到设备)时,ACK表示它将被发送。 NACK会在您的请求中向您发出警告并提出错误。

  4. 见上文。