卸载应用程序时注销RegId GCM
Posted
技术标签:
【中文标题】卸载应用程序时注销RegId GCM【英文标题】:Unregister RegId GCM When uninstall app 【发布时间】:2015-10-02 02:37:51 【问题描述】:我知道有很多像我的问题一样的问题。但它是不同的。 我使用 GCM 制作了一个 android 应用程序来推送通知。有问题。
当我安装应用程序时,我得到了这个安装的regId
。我将它存储在mysql中。然后我推送通知,我的设备收到此通知。
但是,在我卸载应用程序然后再次安装后,我得到了另一个 regId
并将其存储在 mysql 中。我向存储在 mysql 中的所有regId
推送通知。现在我的设备会收到两次此通知。
重复以上步骤多次。我有很多 regId
另一个并将它们存储到 mysql 中。然后将通知推送到我存储在mysql中的所有regId
。现在我的设备会在我安装应用程序时收到通知。
我在卸载应用程序时尝试取消注册regId
,但它不能。当我卸载应用程序或采取任何措施解决我的问题时,是否有任何建议取消注册redId
?
【问题讨论】:
我解决这个问题的方法是给每个通知一个唯一的消息 ID,并为设备一个,保留它收到的最后十个唯一消息的列表。当然,这只是解决问题的方法,并不是真正的解决方案。 是的,我已经尝试过您的建议,但正如您所说,这只是解决问题的方法,而不是真正的解决方案。 【参考方案1】:当您卸载应用程序时,您的注册 ID、令牌、 将是无用的价值。
您的发送推送行为将不会成功,令牌无效。
仅使用 InstanceId 获取令牌
InstanceID instanceID = InstanceID.getInstance(this);
String token = instanceID.getToken("SENDER_ID",
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
Log.i(TAG, "GCM Registration Token: " + token);
【讨论】:
那么,当我卸载执行你的代码时,有什么方法调用? 您无需在应用程序中添加代码即可卸载。 当你卸载你的应用程序时,谷歌服务会自动使用 GCM 令牌。最重要的是获取注册密钥的方法。你能告诉我你的日常吗?【参考方案2】:我使用一个 ID 来验证设备的 installationId 是:
UUID.randomUUID().toString()
然后将RegId
和InstallationID
发送到服务器。推送通知时,我推送更多InstallationID
。
【讨论】:
以上是关于卸载应用程序时注销RegId GCM的主要内容,如果未能解决你的问题,请参考以下文章
取消注册和重新注册 GCM 消息会导致两个 regId 有效。这是预期的吗?