ios - 如何管理 iOS apns token 更改

标签 ios apple-push-notifications devicetoken

我遇到了一个问题,即用户在卸载并重新安装我的应用程序后开始收到双重通知,因为设备向我的服务器发送了 2 个不同的 APNS token - 一个来自第一次安装,另一个在重新安装应用程序后。由于 token 不同,我无法确定这是同一台设备。

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

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

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

最佳答案

这就是我们最终解决它的方式:

在每次应用启动时:

  1. 创建推送通知 token
  2. localstorage 中有 token 吗?
    • 是 - 将 token 与本地存储进行比较。它们相同吗?
      • 是 - 返回
      • 否 - 使用新 token 更新服务器,并在服务器响应“确定”后将其保存在本地存储和钥匙串(keychain)中
    • 否 - 检查钥匙串(keychain)中是否有 token
      • 是 - 将 token 与钥匙串(keychain)进行比较。它们相同吗?
        • 是 - 将 token 保存在本地存储中并返回
        • 否 - 使用新 token 更新服务器,并在服务器响应“确定”后将其保存在本地
          存储和钥匙串(keychain)
    • 否 - 使用新 token 更新服务器,并在服务器响应“确定”后将其保存在本地存储和钥匙串(keychain)中

如果有人有更优雅的方法来解决它,我很想听听

关于ios - 如何管理 iOS apns token 更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34280527/

相关文章:

ios - APN 重复 token

ios - 另一个应用程序中的设备 token 更改

ios - 使用 Parse 制作 iOS 社交网络应用程序?

ios - 共享扩展帖子照片 : Failed to determine whether URL is managed by a file provider

ios - Swift PresentViewController 关闭键盘

ios - 获取 NSError 域 : "com.google.GTLJSONRPCErrorDomain" while fetching Google Calendar events in Swift

java - 将代理与 JavaPNS 2.2 结合使用

ios - 在将设备 token 发送到我的服务器时它会进行多次

ios - Quickblox 推送通知失败

IOS取消本地通知