我有一个问题,用户在卸载并重新安装我的应用程序后开始接收双重通知,因为设备向我的服务器发送了2个不同的APNS令牌 - 一个来自第一个安装,另一个来自重新安装应用程序.由于令牌不同,我不知道这是同一个设备.
在iOS 9问世之前,每次我卸载并重新安装应用程序时,我总是拥有相同的APNS,因此很容易知道这是用户以前使用的相同设备.从iOS 9开始,似乎每次安装都会更改APNS令牌.
我的问题是如何判断客户端是否卸载并重新安装应用程序,并更新其APNS令牌而不是添加新令牌?
我问,因为这听起来像大多数iOS开发人员必须处理的事情,但我找不到Apple如何解决这个问题的最佳做法,所以我希望其他人可以分享他们在这个问题上的经验.
这就是我们最终解决它的方式:
每个应用程序发布时:
创建推送通知令牌
localstorage中有令牌吗?
是 - 将令牌与localstorage进行比较.他们是一样的吗?
是的 - 返回
no - 使用新令牌更新服务器,并在服务器响应'OK'后将其本地保存在本地存储和钥匙串中
不 - 检查钥匙串中是否有令牌
是 - 将令牌与钥匙串进行比较.他们是一样的吗?
是 - 在localstorage中保存令牌并返回
no - 使用新令牌更新服务器,并在服务器响应'OK'后将其本地保存在本地
存储和钥匙串中
no - 使用新令牌更新服务器,并在服务器响应'OK'后将其本地保存在本地存储和钥匙串中
如果有人有更优雅的方式来解决它,我很乐意听到它