一旦预期的消息发送到android应用程序,我的服务器能否从GCM收到确认?

一旦预期的消息发送到android应用程序,我的服务器能否从GCM收到确认?,android,google-cloud-messaging,Android,Google Cloud Messaging,我已经开始将GCM集成到我的android应用程序中。在的帮助下,我已经设置了示例演示,效果非常好。我还了解服务器向GCM发送消息时收到的不同消息,我认为这表示我的服务器和GCM服务器之间的通信状态 我的问题是,有没有办法获取GCM服务器和android应用程序之间的通信状态?基本上是一种确认,表示预期消息是否已成功传递。我还读到,除非设置了time_to_live标志,否则时间为4周,这使我能够理解GCM维护队列并肯定会确保消息传递 但是,为了确保可靠性,作为第三方服务器,我是否需要重试发送相

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

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

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


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

我认为不可能从GCM服务器获取该信息。这意味着您必须依赖于成功接收您的消息的客户端应用程序和服务器之间的另一种通信方法(如您所述)

您从GCM服务器(如您所知)获得的响应只允许:


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

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


谢谢你。我对这一点有了更多的想法,并且相信如果没有发送,发送的消息至少不会丢失!因此,发送另一个是没有意义的,因为已经发送的一个迟早会在GCM机制的帮助下交付。
success: Number of messages that were processed without an error.
failure: Number of messages that could not be processed.