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

Pra*_*ran 4 android push-notification google-cloud-messaging

我做了一个Android应用程序.我用GCM推送通知.我在用户登录时使用GCM注册设备.我使用外部MySql数据库来存储用户的注册ID.它工作正常.

当我执行以下步骤时:

  1. 在我的手机中安装了我的应用.
  2. 使用user1登录.
  3. 从我的手机上卸载了应用程序.
  4. 再次安装应用程序.
  5. 使用user2登录.

仍然在我的手机中收到user1通知,这意味着在卸载应用程序时GCM 没有取消注册我的设备.

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

你能建议我如何解决这个问题吗?

我读过GCM在卸载后需要一些时间来取消注册设备.

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

Koh*_*Koh 5

确实,GCM在卸载后需要一些时间来取消注册设备.根据文档,GCM服务器仅在发送"反弹"消息后才会将注册ID标记为删除,因为已卸载该应用程序.

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

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

文档中的其他说明:

要确保消息发送给目标用户:

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