2013-02-27 101 views
8

我有一个基于Google Cloud Messaging的应用程序,它运行良好。现在(今天)突然间开始出现我们以前从未见过的问题。对于在设备之间发送的每条消息,接收设备将获得两次。第一个将几乎立即到达(在不到3秒内发送)。第二个几分钟后到达。测试中有两个设备,问题与发送者/接收者无关。所以如果一个设备向另一个发送一些消息,另一个会立即得到它们 - 但是稍后,它会收到一大堆消息,这是它收到的消息的第二个副本。GCM重复消息

我已经放入断点以确保发送设备不是罪魁祸首:消息只发送一次(即发送的Web服务只被调用一次 - 后端的代码运行在Google App Engine上,它的年龄并没有改变。)然而,消息以某种方式被传递给接收设备两次。通过使用断点,我还确保我们在接收方的代码不负责任:验证GCMIntentService::onMessage()的确针对每个发送的消息调用了两次。

我们也确保我们数据库中的注册ID是最新的。在这一点上,我很困惑,需要想法取得进一步的进展。那么有什么想法?

+0

我不能确认这是一个用户。大约7个小时后,我收到每封邮件两次。来自Facebook,Gmail等。非常沮丧...我怀疑gcm – aeno 2013-02-27 03:15:16

+0

Aeno:感谢您的确认。您是否可以编辑您的帖子来说“可以确认”而不是“不能” - 这就是您的意思。谷歌Android团队的任何人都在看这个空间?有没有官方的话? – user2113392 2013-02-27 03:50:49

+1

同样在这里。自昨天起,我们仍在开发中的应用程序会收到重复的消息。 – swehrli 2013-02-27 11:05:46

回答

0

我们也有同样的问题,我们相信我们不会发送消息两次。 这可能是涉及到怎么在这里解释关于“规范标识”的问题:http://developer.android.com/google/gcm/adv.html

[...]然而,如果在应用程序中的错误触发多个注册同一设备,它可以是很难调和状态,你可能会以重复消息结束。

0

同样的问题在这里。我们有很多与MyMalcom和Urban Airship集成的应用程序,并且自从星期一以来,所有这些应用程序都会推送两次。我们也检查了Ferran建议的canonicalId变化,但是交付给GCM的消息是可以的(没有无用的Id变化)。