我遇到了一个问题,即用户在卸载并重新安装我的应用程序后开始收到双重通知,因为设备向我的服务器发送了 2 个不同的 APNS token - 一个来自第一次安装,另一个在重新安装应用程序后。由于 token 不同,我无法确定这是同一台设备。
在 iOS 9 出来之前,每次我卸载并重新安装应用程序时,我总是得到相同的 APNS,因此很容易知道这是用户以前使用的同一台设备。从 iOS 9 开始,APNS token 似乎在每次安装时都会更改。
我的问题是如何判断客户端是否卸载并重新安装应用程序,并更新他的 APNS token 而不是添加新 token ?
我想问的是,这听起来像是大多数 iOS 开发人员必须处理的事情,但我无法从 Apple 找到任何关于如何解决这个问题的最佳实践,所以我希望其他人可以分享他们在这个问题上的经验。
最佳答案
这就是我们最终解决它的方式:
在每次应用启动时:
- 创建推送通知 token
- localstorage 中有 token 吗?
- 是 - 将 token 与本地存储进行比较。它们相同吗?
- 是 - 返回
- 否 - 使用新 token 更新服务器,并在服务器响应“确定”后将其保存在本地存储和钥匙串(keychain)中
- 否 - 检查钥匙串(keychain)中是否有 token
- 是 - 将 token 与钥匙串(keychain)进行比较。它们相同吗?
- 是 - 将 token 保存在本地存储中并返回
- 否 - 使用新 token 更新服务器,并在服务器响应“确定”后将其保存在本地
存储和钥匙串(keychain)
- 是 - 将 token 与钥匙串(keychain)进行比较。它们相同吗?
- 否 - 使用新 token 更新服务器,并在服务器响应“确定”后将其保存在本地存储和钥匙串(keychain)中
- 是 - 将 token 与本地存储进行比较。它们相同吗?
如果有人有更优雅的方法来解决它,我很想听听
关于ios - 如何管理 iOS apns token 更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34280527/