8

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

我设置了断点以确保发送设备不是罪魁祸首:消息只发送了一次(即发送的网络服务只调用了一次——以及在 Google App Engine 上运行的后端代码,很久没有改变了。)但是,消息以某种方式被传递到接收设备两次。通过使用断点,我还确保我们自己的接收端代码不负责:已验证GCMIntentService::onMessage()确实为每个发送的消息调用了两次。

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

4

3 回答 3

5

https://groups.google.com/forum/#!topic/android-gcm/EHZUTEJMeyw

检查上面的官方 GCM 线程。每个人都在经历这个问题。谷歌的错!

于 2013-02-27T11:22:24.257 回答
0

我们也有同样的问题,我们确定我们不会两次发送消息。这可能是与此处解释的“规范 ID”相关的问题:http: //developer.android.com/google/gcm/adv.html

[...] 但是,如果应用程序中的错误触发同一设备的多个注册,则可能很难协调状态,并且您最终可能会收到重复的消息

于 2013-02-27T11:05:15.290 回答
0

这里同样的问题。我们有许多与 MyMalcom 和 Urban Airship 集成的应用程序,自周一以来,它们都获得了两次推送。我们还检查了 Ferran 建议的 canonicalId 更改,但传递给 GCM 的消息是正常的(没有 cannonical Id 更改)。

于 2013-02-27T11:39:01.913 回答