我有一个基于Google Cloud Messaging的应用程序,它运行良好。现在(今天)它突然开始出现我们以前从未见过的问题。对于设备之间发送的每条消息,接收设备将获得两次。第一个将几乎立即到达(发送不到3秒)。第二次到达几分钟后。测试中有两个设备,问题是发送者/接收者中的哪一个相同。因此,如果一个设备向另一个发送一些消息,另一个将立即得到它们 - 但是稍后,它将收到一连串的消息,这是它收到的消息的第二个副本。
我已经设置断点以确保发送设备不是罪魁祸首:消息只发送一次(即发送的Web服务只调用一次 - 以及后端的代码,运行于谷歌应用引擎,已经多年没有改变。)但是,消息以某种方式被传递到接收设备两次。通过使用断点,我还确保接收方自己的代码不负责:验证GCMIntentService::onMessage()
确实会为每个已发送的消息调用两次。
我们还确保数据库中的注册ID是最新的。在这一点上,我很难过,需要一些想法才能取得进一步的进展。那么任何想法?
答案 0 :(得分:5)
https://groups.google.com/forum/#!topic/android-gcm/EHZUTEJMeyw
检查上面的官方GCM帖子。每个人都在遇到这个问题。谷歌的错!
答案 1 :(得分:0)
我们也有同样的问题,我们确信我们不会发送两次消息。 这可能是与此处所解释的关于“Canonical ID”的问题有关:http://developer.android.com/google/gcm/adv.html
[...]但是,如果应用程序中的错误触发了同一设备的多次注册,则可能很难协调状态,最终可能会出现重复消息。
答案 2 :(得分:0)
这里的问题相同。我们有许多与MyMalcom和Urban Airship整合的应用程序,所有这些应用程序自周一开始两次推送。我们还检查了Ferran建议的canonicalId更改,但是传递到GCM的消息都没问题(没有任何规范ID更改)。