【发布时间】:2014-05-25 15:26:35
【问题描述】:
我是 android 开发的新手,我现在正在开发推送通知应用程序,并试图了解 GCM 如何在服务器端和客户端工作的概念
我被 google android 开发者网站上的 Flow Control 中给出的概念之一困住了。
http://developer.android.com/google/gcm/ccs.html#flow
他们给出了这样的东西:
发送到 CCS 的每条消息都会收到一个 ACK 或一个 NACK 响应。 未收到这些回复之一的邮件将被视为 待办的。如果待处理消息数达到 1000,则第 3 方应用 服务器应该停止发送新消息并等待 CCS 确认一些现有的待处理消息。
相反,为了避免第 3 方应用服务器过载,CCS 将 如果有太多未确认的消息,则停止发送。所以, 第 3 方应用服务器应“确认”上游消息,从 通过CCS客户端应用程序,尽快维护一个 传入消息的持续流动。上述待处理消息 限制不适用于这些 ACK。即使未决消息计数 达到 1000,第 3 方应用服务器应继续发送 ACK 用于从 CCS 接收到的消息,以避免阻止新消息的传递 上游消息。
ACK 仅在一个连接的上下文中有效。如果 在可以确认消息之前关闭连接,第 3 方应用程序 服务器应等待 CCS 重新发送上游消息之前 再次确认。类似地,所有待处理消息的 ACK/NACK 在连接关闭之前未从 CCS 收到 再次发送。
我的问题是
1 >> 这是第 3 方应用服务器和 gcm 服务器之间的流程吗?
2 >> 为什么第 3 方服务器只能发送 1000 个请求,如果发出更多请求会怎样?
3 >> gcm 什么时候发送 ACK 和 NACK?从某种意义上说,当向第 3 方服务器发出 gcm 请求时,gcm 会检查设备是否已注册(抛出注册 id),或者它是否确认将消息传递到已注册的已注册设备,然后发送 ACK 到第三方服务器?
4 >>服务器什么时候收到NACK?从某种意义上说,在什么情况下它会收到 NACK ?
提前致谢!
【问题讨论】:
标签: android push-notification google-cloud-messaging