GCM在应用程序被卸载时没有注销设备

4
我制作了一个Android应用程序。我使用GCM推送通知。当用户登录时,我正在使用GCM注册设备。我使用外部MySql数据库存储用户的注册ID。这很好用。
但是,
当我执行以下步骤时:
1. 在我的手机上安装我的应用程序。 2. 使用user1登录。 3. 从我的手机中卸载该应用程序。 4. 再次安装该应用程序。 5. 使用user2登录。
我仍然可以在我的手机上接收到user1的通知,这意味着当应用程序被卸载时,GCM没有注销我的设备。
当应用程序被卸载时,我无法删除Mysql数据库中的行,因为我不知道应用程序何时被卸载,或者用户可能在卸载应用程序时没有互联网连接以删除行。
请问如何解决这个问题?
我读到GCM将需要一些时间才能在卸载后注销设备。
当GCM注销设备时,如何在mysql中删除行?
1个回答

5
根据文档,卸载后GCM将需要一些时间来注销设备。 GCM服务器仅在发送了“反弹”消息(因为应用已被卸载)后才标记删除注册ID。
更加复杂的是,重新安装的应用程序可以接收相同的注册ID或不同的注册ID。
您可以在data JSON对象中添加一个字段来指定预期的用户,以便无论应用程序何时被卸载和重新安装,用户只会收到针对他们的消息(例如通过创建某种“检查已登录用户”函数)。
来自文档的其他注意事项:

确保消息发送给预期的用户:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接