我正在开发用于通过电子邮件发送服务的移动客户端其中一个关键功能是有关邮箱中新邮件的通知。根据GCM架构指南的建议,我们使用“Pusher”,负责在收到新消息后向Google服务器发送消息。问题是测试过程报告了向设备发送推送通知的严重问题。
所以问题是:是否存在监控推送通知交付百分比,时间等平均统计数据的方法?或者也许有人在如何设置测试环境以便有效监控应用程序工作期间丢失的通知数量方面有经验?
欢迎与改善Android GCM体验相关的所有“提示和技巧”。
答案 0 :(得分:21)
Google称其GCM服务器的处理时间不到一毫秒。请点击以下链接,了解Google开发者关于GCM的精彩视频。它是可信的因为我现在几乎可以立即使用我公司的服务器获取推送通知。
http://www.youtube.com/watch?v=YoaP6hcDctM
他们不保证投放,但他们会尝试最多4周的时间来发送邮件,具体取决于您在发送给Google GCM服务器的邮件中设置的时间,以及是否希望让Google保留最终数据在消息传递时,如果设备处于脱机状态,则将消息传递到设备。
但是,在某些情况下,GCM消息不会被传递。
答案 1 :(得分:6)
唯一的方法是使用收到的推送时间戳向服务器报告。
你可以
在GCM服务中收到通知后,向服务器报告。要实现,您必须为推送通知添加推送ID,并将推送数据与推送数据一起发送。客户端必须在收到消息后获取时间戳,并将其与通知ID一起发回。一个简单的PHP脚本可以完成(当你发送推送通知时,你设置发送通知的时间,一旦它收到设备的时间戳,它设置接收通知。这归结为数据库中的两个字段(以粗体标记)。在这种方法中,您可能不太关心错误,因为设备很可能在收到通知时会有连接,因此对您的服务器的请求将通过。
保留应用中收到的通知列表及其时间戳。完成同步后,在同步操作中发送此数据。这最终是相同的方法,但您的服务器数据将不像第一种方法那样实时。但是,客户端不需要额外请求,但保存收到的通知及其时间戳是。
总而言之,您必须使用 notification-id 跟踪发送的通知及其发送时间(发送通知)及其接收时间(的接收通知强>)。简单的查询将帮助您分析此数据。
答案 2 :(得分:5)
Google已添加支持,以便您可以从Cloud Connection Server(CCS)接收送达回执:
当设备确认收到CCS发送的消息时,您可以使用上游消息传递来获取送达回执(从CCS发送到第三方应用服务器)。
要启用此功能,第三方应用服务器发送给CCS的消息必须包含名为“delivery_receipt_requested”的字段。当此字段设置为true时,CCS会在设备确认收到特定邮件时发送送达回执。
答案 3 :(得分:2)
Google不会向您提供这些统计信息。 android开发者控制台上有一些统计数据。这仅显示消息和注册的数量。
您必须实现自己的数据收集,这可以很容易地完成。你可以记录时间&发送的每封邮件的ID,并在收到邮件时将您的Android客户端报告回服务器。然后,您可以将数据存储在服务器上并根据需要进行查询。
答案 4 :(得分:0)
从那时起,Google就为开发人员提供了先进的监控工具。
Gcm诊断工具可在Google Play开发者控制台中使用。其他信息在https://support.google.com/googleplay/android-developer/answer/2663268
因此,您可以通过注册令牌轻松跟踪特定的邮件状态。