iOS 远程推送

主要说一下iOS的远程推送 主要看下面两张图服务器

Probider是你的服务器 APNs是苹果推送的服务器 Apple Notifiction Service iPhone 是你的手机终端 Client App 是你的应用程序app

过程分为三个过程ide

  • 首先你的service 应用程序把要发送的消息内容、目的iPhone的标识打包,发给APNS。
  • 而后APNS在自身的已注册Push服务的iPhone列表中,查找有相应标识的iPhone,并把消息发到iPhone。
  • 最后iPhone把发来的消息传递给相应的应用程序, 而且按照设定弹出Push通知

更详细一点的图ui

这个图更为详尽的讲述整个过程3d

  1. 首先是应用程序注册消息推送。
  2. IOS跟APNS Server要deviceToken。应用程序接受deviceToken。
  3. 应用程序将deviceToken发送给PUSH服务端程序。
  4. 服务端程序向APNS服务发送消息。
  5. APNS服务将消息发送给iPhone应用程序。

其中最关键的是第三步 应用程序能够直接把 deviceToken 发送给 YourServer,可是在iOS9 以后 deviceToken 是会发生变化的, 当你卸载程序从新安装的时候 可能会受到重复的推送,此时 能够经过 uuid + keyChain + deviceToken的方法,传给 YourServer, 让 YourServer 根据 uuid来更新 deviceToken 来保证惟一性,经过 keyChain 保存uuid ,让应用程序 卸载的时候仍能够 保留 UUID,保证惟一性。 然而 在iOS 10 以后 卸载应用 会清空 keyChain 参考连接 forums.developer.apple.com/thread/7227…cdn

此时 有什么办法呢?blog

  1. 能够在用户登陆的时候,根据用户的惟一标识 好比 用户的手机号 token等信息 + deviceToken来更新 deviceToken。
  2. 或者使用手机 mac 地址等物理信息确保惟一性
  3. 期待补充
相关文章
相关标签/搜索