【发布时间】: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