如果用户在卸载后立即再次安装应用程序,GCM 是否会删除旧的注册 ID?

2024-01-26

我了解到,当 GCM 无法发送下一个推送通知时,GCM 会将注册 ID 标记为删除。

但就我而言,我的用户发生了以下情况。

Scenario :

1) 我的用户安装了该应用程序,并且他的设备已向 GCM 注册。

2)同一用户立即卸载并再次安装该应用程序。第二次生成新的注册 ID。

3)这两个注册ID存储在我的数据库中。

4)现在这个特定用户收到两个推送通知。

现在我有以下问题:

问题 :

  1. GCM 会在一段时间后删除旧的注册 ID 吗?
  2. 请建议我如何处理这种情况?

来自官方文档:

卸载客户端应用程序注册的工作原理 https://developers.google.com/cloud-messaging/registration#how-uninstalled-client-app-unregistration-works

客户端应用程序可以在注册后自动注销 已卸载。然而,这个过程不会立即发生。什么 这种情况下发生的情况是:

  1. 最终用户卸载客户端应用程序。
  2. 应用程序服务器向 GCM 连接服务器发送消息。
  3. GCM 连接服务器将消息发送到设备上的 GCM 客户端。
  4. 设备上的GCM客户端收到消息,检测到客户端应用已被卸载;检测详细信息取决于客户端应用程序运行的平台。
  5. 设备上的GCM客户端通知GCM连接 客户端应用程序已卸载的服务器。
  6. GCM 连接服务器 标记要删除的注册令牌。
  7. 应用服务器发送一个 向 GCM 发送消息。
  8. GCM 返回 NotRegistered 错误消息给 应用程序服务器。
  9. 应用服务器应删除注册令牌。

笔记 注册令牌可能需要一段时间才能完全完成 从 GCM 中删除。因此,在步骤 7 中发送的消息有可能 上面获取一个有效的消息 ID 作为响应,即使该消息 不会传递到客户端应用程序。最终,登记 令牌将被删除,服务器将收到 NotRegistered 错误, 无需应用程序服务器执行任何进一步操作。

但是,显然您仍然会收到旧注册 ID 的通知,正如用户在其他问题中所述:

  • 重新安装后,应用程序使用 GCM 收到重复的通知 https://stackoverflow.com/questions/27315169/app-recieves-duplicate-notification-using-gcm-after-reinstalling
  • Android GCM 和多个令牌 https://stackoverflow.com/questions/23293444/android-gcm-and-multiple-tokens
  • https://stackoverflow.com/questions/27845298/gcm-deleting-app-and-reinstalling-multiple-notifications https://stackoverflow.com/questions/27845298/gcm-deleting-app-and-reinstalling-multiple-notifications
  • 取消注册和重新注册 GCM 消息会导致两个 regId 有效。这是如预期的那样吗? https://stackoverflow.com/questions/16320549/unregistering-and-re-registering-for-gcm-messages-causes-two-regids-to-be-valid
  • 即使卸载后,旧的 GCM 令牌还会继续存在吗? https://stackoverflow.com/questions/17328654/do-old-gcm-tokens-live-on-even-after-an-uninstall

对于这个问题,有一个称为“规范 ID”的功能:

规范ID https://developers.google.com/cloud-messaging/registration#canonical-ids

如果客户端应用程序中的错误触发了多次注册 同一设备,很难协调状态和客户端应用程序 可能最终会出现重复的消息。

实施规范 ID 可以帮助您更轻松地从这些问题中恢复 情况。规范的注册 ID 是注册令牌 客户端应用程序请求的最后一次注册。这是身份证 服务器向设备发送消息时应使用的。

如果您尝试使用旧的注册令牌发送消息,GCM 将 照常处理请求,但它将包含规范 ID 响应的 Registration_id 字段。确保更换 使用此规范 ID 存储在您的服务器中的注册令牌,如 最终旧的注册令牌将停止工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果用户在卸载后立即再次安装应用程序,GCM 是否会删除旧的注册 ID? 的相关文章

随机推荐