【问题标题】:remove iOS push notification after fresh reinstall重新安装后删除 iOS 推送通知
【发布时间】:2015-08-25 06:42:50
【问题描述】:

我的应用程序已经成功集成了苹果推送通知,当用户登录到应用程序时,应用程序注册推送通知并且令牌保存在我们的后端,当用户退出应用程序时,我们删除推送通知来自我们后端的令牌。但是如果用户从设备上卸载应用程序而不从应用程序注销,然后重新安装,在这种情况下,我们仍然可以向设备发送推送通知,因为应用程序是新安装的并且没有登录任何用户,我们必须删除令牌从后端。由于 iOS 应用程序没有任何用于卸载事件的 API,我如何从后端删除设备令牌。我可以使用推送通知反馈服务来获取已卸载的设备令牌,但是当用户删除应用程序然后重新安装时,我该如何解决这个问题。

我用Skype测试了这个场景,它也有这个问题。 (安装Skype>登录>(现在您可以将应用程序发送到后台并从任何其他设备发送一些聊天,您将收到推送通知)>然后从设备中删除应用程序而不从Skype注销>重新安装Skype>现在如果我们发送 Skype 聊天,我们收到推送通知,但 Skype 应用程序是新安装的,没有人登录)

【问题讨论】:

  • 我认为这个问答暗示了一种可能的方法? stackoverflow.com/questions/14858224/… - 也许是一个静默的“心跳”通知,会在重新安装之前触发苹果端的注销?
  • 我能想到的唯一解决方法是:1)定期与后端服务器进行握手(例如 1 小时),然后更新数据库中的时间戳 2)如果对于没有握手的用户X 小时,您可以删除存储在服务器上的设备令牌 3) 但是如果用户长时间离线,令牌将被删除。因此,当用户上线时,应该有一种方法可以将令牌重新发送到您的服务器。 (检测网络是否可用,注册设备令牌并保存到您的服务器)

标签: ios iphone push-notification apple-push-notifications


【解决方案1】:

我想你能做的最好的事情是在没有登录用户的情况下启动应用程序时预防性地取消注册/删除令牌。无论如何,您都应该在每次启动应用程序时更新注册,因此在每次应用程序启动时注册/取消注册,具体取决于用户是否登录。这样,如果用户第一次重新安装应用程序并启动它,它将被取消注册。

这是您可以实现的最佳行为,因为 Twitter、Facebook、Skype 等也是如此......

【讨论】:

    【解决方案2】:

    我认为您无法获取事件或检测用户是否已删除该应用。您可以做的是向设备发送定期通知(仅设置徽章,不发送通知)并删除您获得 401 状态代码的令牌。然后您知道该应用已被删除,您可以删除令牌。

    【讨论】:

      【解决方案3】:

      是的!正如您自己引用的那样,除非您的服务器有某人已注销的信息,否则它将继续发送通知。显然,当您的应用程序被卸载然后重新安装时,您将不会获得信息。

      解决方法:如果您的应用被重新安装,您可以调用 API 取消注册,因为没有用户登录。

      【讨论】:

      • 如果用户打开应用程序我们可以删除令牌,但如果用户重新安装应用程序并且不打开,这就是我现在面临的实际情况。
      • 重新安装应用后,您将获得相同的设备令牌。所以你可以删除服务器上的 userID 和 deviceToken 绑定。
      • 据我所知,没有这么神奇的兄弟。愿投反对票的人帮助你。
      猜你喜欢
      • 1970-01-01
      • 2017-06-11
      • 2013-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-22
      • 2016-10-16
      相关资源
      最近更新 更多