iOS 远程推送

本文介绍了iOS远程推送的流程,包括应用程序将消息内容和目的iPhone标识打包发给APNS,APNS查找对应iPhone并发送消息,iPhone再将消息传递给应用程序。还提到iOS 9后deviceToken会变化,可通过uuid + keyChain + deviceToken保证唯一性,iOS 10后可利用用户唯一标识或手机物理信息确保唯一性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

过程分为三个过程

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

更详细一点的图

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

  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…

此时 有什么办法呢?

  1. 可以在用户登录的时候,根据用户的唯一标识 比如 用户的手机号 token等信息 + deviceToken来更新 deviceToken。
  2. 或者使用手机 mac 地址等物理信息确保唯一性
  3. 期待补充

转载于:https://juejin.im/post/5d09dd1b51882566bf1648fe

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值