【发布时间】:2014-12-18 21:47:12
【问题描述】:
我在 Android 客户端使用 GCM 推送通知获取重复通知时遇到问题。
我安装应用程序并像这样在 GCM 中注册:regid = gcm.register(SENDER_ID);
这给了我一个注册 ID(例如:“ABC”)。如果我尝试重新注册,我会得到相同的 ID(“ABC”)。如果我清除应用程序数据(在 Android 应用程序设置中)并重新加载应用程序,我会得到相同的 ID(“ABC”),但是如果我卸载应用程序并重新安装,我会得到一个新 ID(用于例如:“DEF”)。
这很好,但是在第二次注册后,我的应用现在将收到发送到“ABC”和“DEF”的通知。这会在我的应用中产生一些结果。
有没有办法忽略发送到任何 reg ID除了最后一个注册的所有消息(在我的示例中:“DEF”)?
我用来测试的例子是官方的 GCM-Client (https://developer.android.com/google/gcm/client.html)。
【问题讨论】:
-
“ABC”和“DEF”存储在哪里?为什么不在收到新的注册 ID 时直接覆盖?
-
卸载然后重新安装后等待多长时间。文档说,当用户卸载应用程序时,他们会自动取消注册,但更改可能需要一段时间才能发生。 developer.android.com/google/gcm/adv.html#unreg
-
@dannyroa "ABC" 和 "DEF" 存储在服务器上。应用卸载后无法覆盖。
-
@tyczj 这是一个很好的观点。我将再次测试,但这次稍等一下,看看它是否在 Google 方面未注册。
-
@MarkWinterbottom:您可能需要设备 ID 才能知道同一设备是否有新的注册 ID 并覆盖旧的。见stackoverflow.com/questions/2785485/…。
标签: android push-notification google-cloud-messaging