阻止GCM客户端显示来自旧注册表的消息

时间:2014-12-18 21:47:12

标签: android push-notification google-cloud-messaging

我遇到了在Android客户端使用GCM推送通知获取重复通知的问题。

我安装了应用并向GCM注册,如下所示:regid = gcm.register(SENDER_ID);

这给了我一个注册ID(例如:“ABC”)。如果我尝试重新注册,我会得到相同的ID(“ABC”)。如果我清除应用程序数据(在Androids应用程序设置中)并重新加载应用程序,我会得到相同的ID(“ABC”),但是如果我卸载应用程序并重新安装,我会得到一个新ID(用于例如:“DEF”)。

这很好,但是在第二次注册后,我的应用现在会收到发送到 “ABC”“DEF”的通知。这会在我的应用中产生一些效果。

有没有办法忽略发送到任何reg ID 的所有邮件,除了最后注册的邮件(在我的例子中:“DEF”)?

我用来测试的例子是官方的GCM-Client(https://developer.android.com/google/gcm/client.html)。

1 个答案:

答案 0 :(得分:0)

无法忽略发送到旧注册码的邮件。

你能做的最好:

  1. 在客户端,尝试将一些应用数据存储在外部存储上。这样您就可以确定该应用程序之前是否已安装在设备上,并告知您的服务器将旧的reg id替换为新的。

  2. 在服务器端,处理来自GCM的规范注册响应。这不会阻止向旧的reg id发送消息,但是一旦你向这样的reg id发送消息,你就会立即从你的数据库中删除旧的reg,并且不再向它发送消息