卸载应用程序时,GCM未取消注册设备

时间:2015-05-29 22:47:27

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

我制作了一款Android应用。我使用 GCM 来推送通知。我在用户时使用GCM注册设备 已登录。我正在使用外部MySql数据库来存储 用户注册ID。它运作良好。

但是

当我执行以下步骤时:

  1. 在我的手机中安装了我的应用。
  2. 使用 user1 登录。
  3. 从手机上卸载应用
  4. 再次安装该应用。
  5. 使用 user2 登录。
  6. 我的手机仍会收到

    user1 通知,这意味着GCM 在卸载应用时取消注册我的设备。

    卸载应用程序时,我无法删除Mysql数据库中的行,因为我不知道应用程序何时被卸载或用户可能没有互联网 卸载应用程序时删除行的连接。

    您能否建议我如何解决这个问题?

    我读到GCM在卸载后需要一些时间取消注册设备。

    当GCM取消注册设备时,如何删除mysql中的行?

1 个答案:

答案 0 :(得分:5)

确实,GCM在卸载后需要一些时间来取消注册设备。基于docs,GCM服务器仅在发送消息"反弹后才会标记要删除的注册ID。因为该应用已被卸载。

如果只是为了使情况更复杂,重新安装的应用程序可以接收相同的注册ID或不同的注册ID。

您可以做的一件事是在data JSON对象中添加一个字段,以指定目标用户是谁。这样,无论应用程序已被卸载然后重新安装的情况如何,用户将只接收针对他们的消息(例如,通过制作某种类型的"检查登录用户"功能)。

文档中的其他说明:

  

确保邮件发送给目标用户:

     
      
  • 应用服务器可以维护当前用户和注册令牌之间的映射。
  •   
  • 然后,客户端应用程序可以检查以确保收到的消息与登录用户匹配。
  •