卸载应用程序时 GCM 未注销设备
GCM did not unregister the device when the app is uninstalled
我制作了一个 Android 应用程序。我使用 GCM 推送通知。当用户时,我正在向 GCM 注册设备
已登录。我正在使用 外部 MySql 数据库 来存储
用户的注册ID。效果很好。
但是
当我执行以下步骤时:
- 在我的手机上安装了我的应用程序。
- 使用 user1 登录。
- 已从我的手机上卸载该应用程序。
- 再次安装应用程序。
- 使用 user2 登录。
user1 通知仍然在我的手机中收到,这意味着 GCM 没有 在卸载应用程序时注销我的设备。
我无法在卸载应用程序时删除 Mysql 数据库中的行,因为我不知道应用程序何时卸载或用户可能没有互联网
卸载应用程序时连接以删除行。
你能建议我如何解决这个问题吗?
我了解到 GCM 在卸载后需要一些时间来注销设备。
当 GCM 取消注册设备时,如何删除 mysql 中的行?
确实GCM在卸载后需要一些时间来注销设备。基于docs,GCM服务器只有在发送“退回”消息后才会将注册ID标记为删除,因为应用已经卸载
如果只是为了使情况更复杂一点,重新安装的应用程序可以收到相同的注册 ID 或不同的。
您可以做的一件事是在您的 data
JSON 对象中添加一个字段来指定目标用户是谁。这样,无论应用程序被卸载然后重新安装的情况如何,用户都只会收到为他们准备的消息(例如,通过某种“检查登录用户”功能)。
文档中的附加说明:
To make sure that messages go to the intended user:
- The app server can maintain a mapping between the current user and the registration token.
- The client app can then check to ensure that messages it receives match the logged in user.
我制作了一个 Android 应用程序。我使用 GCM 推送通知。当用户时,我正在向 GCM 注册设备 已登录。我正在使用 外部 MySql 数据库 来存储 用户的注册ID。效果很好。
但是
当我执行以下步骤时:
- 在我的手机上安装了我的应用程序。
- 使用 user1 登录。
- 已从我的手机上卸载该应用程序。
- 再次安装应用程序。
- 使用 user2 登录。
user1 通知仍然在我的手机中收到,这意味着 GCM 没有 在卸载应用程序时注销我的设备。
我无法在卸载应用程序时删除 Mysql 数据库中的行,因为我不知道应用程序何时卸载或用户可能没有互联网 卸载应用程序时连接以删除行。
你能建议我如何解决这个问题吗?
我了解到 GCM 在卸载后需要一些时间来注销设备。
当 GCM 取消注册设备时,如何删除 mysql 中的行?
确实GCM在卸载后需要一些时间来注销设备。基于docs,GCM服务器只有在发送“退回”消息后才会将注册ID标记为删除,因为应用已经卸载
如果只是为了使情况更复杂一点,重新安装的应用程序可以收到相同的注册 ID 或不同的。
您可以做的一件事是在您的 data
JSON 对象中添加一个字段来指定目标用户是谁。这样,无论应用程序被卸载然后重新安装的情况如何,用户都只会收到为他们准备的消息(例如,通过某种“检查登录用户”功能)。
文档中的附加说明:
To make sure that messages go to the intended user:
- The app server can maintain a mapping between the current user and the registration token.
- The client app can then check to ensure that messages it receives match the logged in user.