【问题标题】:Unregister from push notifications when user uninstalls application用户卸载应用程序时从推送通知中注销
【发布时间】:2016-06-15 08:42:18
【问题描述】:

我使用 pubnub 实现了推送通知。我有以下问题,当我卸载应用程序并再次安装它时,应用程序正在接收推送通知而没有向 gcm 注册。我猜这是因为卸载时未调用 gcm 注销,而 gcm 服务器在第二次安装时仍然具有设备注册 ID。

【问题讨论】:

  • 卸载时不会调用 gcm 注销 - 删除/卸载应用时不会执行您的应用代码。重新安装应用程序时,您是否获得了新的 GCM 注册令牌?如果是这样,旧的 GCM 令牌应该被 GCM 服务失效,并且 PubNub 将收到 invalid token 通知并删除与该令牌关联的频道。在 iOS 上,您可以使用密钥链在应用程序的安装中持久存在 - 不确定 Android 是否有类似的机制,但我会问。

标签: android google-cloud-messaging uninstallation pubnub


【解决方案1】:

我觉得不可能,看看here

但是,如果您的应用程序中的用户必须登录,您可以制定一些逻辑来避免这种意外行为。当您从服务器发送推送通知时,您应该发送一个参数来识别用户(例如 userId)。然后当应用收到通知时,您应该将接收到的值与本地值进行比较(此本地值将随着卸载而丢失),如果它们不匹配,请停止通知生成器显示通知。

如果没有任何东西可以在本地识别用户,您可以在注册推送时将 SharedPreferences 中的布尔值设置为 true。如果此布尔值为 false,则不显示通知。

【讨论】:

  • 很好的选择,在显示通知之前在客户端进行双重检查。
【解决方案2】:

假设您可以创建 1 个全局变量 private int nStatus=0 并在 SharedData 中为其赋值 1 ,然后在启动应用程序时,您可以检查它的值为 1 还是 0 如果它是 1 创建通知,否则不要因为删除应用程序时也会删除 SharedData

【讨论】:

    【解决方案3】:

    在您的应用程序开始时,只需在第一点再次注册即可。所以最后一个会被覆盖,gcm 不会推送到最后一个 gcm id。

    【讨论】:

    • 谢谢,但没有成功,推送通知仍在发送中
    猜你喜欢
    • 2020-06-19
    • 2013-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-05
    相关资源
    最近更新 更多