Android GCM投放监测

我正在开发电子邮件服务的移动客户端。 其中一个关键function是有关邮箱中新邮件的通知。 根据GCM体系结构指南的build议,我们正在使用一个“Pusher”,一旦我们收到新消息,它就负责向Google服务器发送消息。 问题在于testing过程报告了推送通知到设备的严重问题。

那么问题是:有没有一种方法来监测推送通知传送百分比,时间等的平均统计数据? 或者,也许有人有如何设置testing环境的经验,以便有效地监控在应用程序工作期间有多less通知正在丢失?

所有与改进的Android GCM体验相关的“提示和技巧”都是值得欢迎的。

Solutions Collecting From Web of "Android GCM投放监测"

Google声称在GCM服务器上的处理时间不到一毫秒。 请参阅下面的链接,了解Google开发者的GCMvideo。 这是可信的,因为我可以立即使用我公司的服务器到我的设备推送通知现在。

http://www.youtube.com/watch?v=YoaP6hcDctM

他们不保证传递,但他们会尝试最多4周的时间来传递消息,具体取决于您在发送给Google的GCM服务器的消息中设置的时长,并且如果您希望让Google保留数据以最终传递消息当设备处于离线状态时,设备将被传送到设备。

但是,在某些情况下GCM消息没有被传送。

  1. 后台数据在帐户和同步设置下未选中。
  2. 在4.0.4(ICS)之前,设备上的Google帐户是GCM的先决条件。 也许,用户没有login到他们的Google帐户。

唯一的方法是使用接收到的推送的时间戳向服务器报告。

你也可以

  1. 一旦在GCM服务中收到通知,请回报给服务器。 要实施,您将不得不为推送通知添加推送ID,并将推送数据与ID一起发送。 一旦收到消息,客户端必须获取时间戳,并将其与通知ID一起发回。 一个简单的PHP脚本可以完成(当你发送一个推送通知,你设置发送通知的时间,一旦它收到设备的时间戳它设置接收通知 。这归结为数据库中的两个领域粗体)在这种方法中,你可能不会太在意错误,因为设备在接收到通知时很有可能会有连接,因此它会向你的服务器发送请求。

  2. 保留您的应用中收到的通知列表及其时间戳。 当同步完成后,在同步操作中发送这些数据。 这最终是相同的方法,但是你的服务器的数据不会像第一种方法那样实时。 但是,客户端不需要额外的请求,但保存接收到的通知和时间戳。

总而言之,您必须跟踪使用通知ID 发送的通知及其发送时间( 发送通知 )及其接收时间( 接收通知 )。 一个简单的查询将帮助你分析这些数据。

Google已经添加了支持,以便您可以从Cloud Connection Server(CCS)接收收据:

当设备确认接收到CCS发送的消息时,您可以使用上游消息传递获取交付收据(从CCS发送到您的第三方应用服务器)。

要启用此function,第三方应用服务器发送给CCS的消息必须包含一个名为“delivery_receipt_requested”的字段。 当此字段设置为true时,CCS在设备确认收到特定消息时发送递送收据。

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

Google不会向您提供这些统计信息。 在android开发者控制台上有一些统计信息可用。 这只显示消息和注册的数量。

你将不得不实现自己的数据收集,这可以很容易地完成。 您可以logging每个发送的消息的时间和ID,并让您的Android客户端报告收到消息的时间回到您的服务器。 然后,您可以将数据存储在服务器上,并根据需要进行查询。

从那时起,Google就为开发人员提供了先进的监控工具。

Gcm诊断工具可在Google Play开发者控制台中使用。 有关其他信息,请访问https://support.google.com/googleplay/android-developer/answer/2663268

因此,您可以通过注册令牌轻松跟踪特定的消息状态。