8

我已经开始将 GCM 集成到我的 android 应用程序中。在启动教程的帮助下,我设置了示例演示,效果非常好。我也了解了当我的服务器向 GCM 发送消息时收到的不同响应状态,我认为这表示我的服务器和 GCM 服务器之间的通信状态。

我的问题是,有没有办法获取 GCM 服务器和 android 应用程序之间的通信状态?基本上是表示预期消息是否已成功传递的确认。我还读到,默认超时为 4 周,除非设置了 time_to_live 标志,这使我理解 GCM 维护队列并且肯定会确保消息传递。

但是,为了确保可靠性,作为第三方服务器,我是否需要重试发送相同的消息(如果 GCM 基础设施尚未处理)?如果我需要照顾重试,如何确定失败?

我的一种方法是,定义一个推送 id 并将其与消息一起发送,一旦收到,android 应用程序将使用相应的推送 id 报告服务器。如果在指定时间内没有收到响应,则服务器将重试发送消息。这种方法在帖子的第二个答案中定义,将有助于监控 GCM 所花费的时间(特别是对于 QA 团队)。

4

2 回答 2

2

我不相信可以从 GCM 服务器获取该信息。这意味着您将不得不依赖成功接收您的消息的客户端应用程序与您的服务器之间的另一种通信方法(如您所述)。

您从 GCM 服务器(如您所知)获得的响应只是让您知道

success: Number of messages that were processed without an error.

或者

failure: Number of messages that could not be processed.

这意味着您可以知道哪些注册 ID 被正确处理(例如,有效值,仍然在 GCM 中注册),但不知道消息是否成功传递到实际设备。

于 2013-01-03T15:35:20.703 回答
2

根据谷歌的 GCM 文档......这可能会有所帮助:

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

于 2014-08-07T07:26:18.753 回答