24

我正在为电子邮件服务开发移动客户端。主要功能之一是有关邮箱中新消息的通知。根据 GCM 架构指南的建议,我们正在使用“推送器”,它负责在我们收到新消息后将消息发送到 Google 服务器。问题是测试过程报告了向设备发送推送通知的严重问题。

那么问题来了:是否有一种方法可以监控关于推送通知传递百分比、时间等的平均统计数据?或者也许有人在如何设置测试环境以有效监控应用程序工作期间丢失了多少通知方面有经验?

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

4

5 回答 5

21

谷歌声称其 GCM 服务器的处理时间不到一毫秒。下面的链接可查看 Google 开发人员提供的有关 GCM 的精彩视频。令人信服的是,我现在可以使用我公司的服务器几乎立即将推送通知发送到我的设备。

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

他们不保证送达,但他们会尝试最多 4 周的时间来送达邮件,具体取决于您在发送到 Google 的 GCM 服务器的邮件中设置的持续时间,以及您是否希望让 Google 保留数据以最终送达邮件到设备,以防在要传递消息时设备处于脱机状态。

但是,在某些情况下不会传递 GCM 消息。

  1. 在帐户和同步设置下未选中后台数据。
  2. 在 4.0.4.(ICS) 之前,设备上的 Google 帐户是 GCM 的先决条件。也许,用户没有登录他们的谷歌账户。
于 2012-12-27T18:04:23.013 回答
6

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

你可以

  1. 在 GCM 服务中收到通知后,向服务器报告。要实施,您必须为您的推送通知添加一个推送 ID,并将该 ID 与推送数据一起发送。客户端在收到消息后必须获取时间戳并将其与通知 ID 一起发回。可以完成一个简单的 php 脚本(当您发送推送通知时,您设置发送通知的时间,一旦它接收到设备的时间戳,它就会设置接收通知。这归结为数据库中的两个字段(标记为粗体)。在这种方法中,您可能不太关心错误,因为设备很可能在收到通知时会建立连接,因此它对您的服务器的请求将通过。

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

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

于 2012-12-28T10:55:16.143 回答
5

Google 增加了支持,以便您可以从云连接服务器 (CCS) 接收交货收据:

当设备确认收到 CCS 发送的消息时,您可以使用上游消息获取送达回执(从 CCS 发送到您的第 3 方应用服务器)。

要启用此功能,您的第 3 方应用服务器发送给 CCS 的消息必须包含一个名为“delivery_receipt_requested”的字段。当此字段设置为 true 时,CCS 会在设备确认收到特定消息时发送送达回执。

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

于 2015-02-25T09:40:24.410 回答
2

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

您必须实现自己的数据收集,这可以很容易地完成。您可以记录发送的每条消息的时间和 ID,并让您的 android 客户端向您的服务器报告收到消息的时间。然后,您可以将数据存储在您的服务器上并根据需要进行查询。

于 2012-12-25T14:51:48.383 回答
0

从那时起,谷歌就为开发者提供了先进的监控工具。

Gcm 诊断工具在 Google Play 开发者控制台中可用。附加信息在这里https://support.google.com/googleplay/android-developer/answer/2663268

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

于 2015-12-02T07:51:08.503 回答