如何管理iOS apns令牌更改

时间:2015-12-15 03:15:32

标签: ios apple-push-notifications devicetoken

我遇到一个问题,用户在卸载并重新安装我的应用后开始接收双重通知,因为设备向我的服务器发送了2个不同的APNS令牌 - 一个来自第一个安装,另一个来自重新安装应用。由于令牌不同,我不知道这是同一个设备。

在iOS 9问世之前,每次我卸载并重新安装应用程序时,我总是拥有相同的APNS,因此很容易知道这是用户以前使用的同一设备。从iOS 9开始,似乎每次安装都会更改APNS令牌。

我的问题是如何判断客户端是否卸载并重新安装应用,并更新其APNS令牌而不是添加新令牌?

我问这对我来说听起来像大多数iOS开发人员必须处理的事情,但我找不到Apple的最佳实践如何解决这个问题,所以我希望其他人可以分享他们在这个问题上的经验。

1 个答案:

答案 0 :(得分:6)

这就是我们最终解决问题的方法:

在每个应用启动时:

  1. 创建推送通知令牌
  2. 在localstorage中有令牌吗?
    • 是 - 将令牌与localstorage进行比较。他们是一样的吗?
      • 是 - 返回
      • 否 - 使用新令牌更新服务器,并在服务器响应后使用'确定'将其本地保存在本地存储和钥匙串中
    • 否 - 检查钥匙串中是否有令牌
      • 是 - 将令牌与钥匙串进行比较。他们是一样的吗?
        • 是 - 在localstorage中保存令牌并返回
        • 否 - 使用新令牌更新服务器,并在服务器响应后使用'确定'将其保存在本地本地
          存储和钥匙串
    • 否 - 使用新令牌更新服务器,并在服务器响应后使用'确定'将其本地保存在本地存储和钥匙串中
  3. 如果有人有更优雅的方法来解决它,我很乐意听到它