博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 远程推送
阅读量:5908 次
发布时间:2019-06-19

本文共 878 字,大约阅读时间需要 2 分钟。

主要说一下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 参考链接

此时 有什么办法呢?

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

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

你可能感兴趣的文章
时序约束优先级_Vivado工程经验与各种时序约束技巧分享
查看>>
minio 并发数_MinIO 参数解析与限制
查看>>
flash back mysql_mysqlbinlog flashback 使用最佳实践
查看>>
mysql存储引擎模式_MySQL存储引擎
查看>>
java 重写system.out_重写System.out.println(String x)方法
查看>>
配置ORACLE 11g绿色版客户端和PLSQL远程连接环境
查看>>
ASP.NET中 DataList(数据列表)的使用前台绑定
查看>>
Linux学习之CentOS(八)--Linux系统的分区概念
查看>>
System.Func<>与System.Action<>
查看>>
asp.net开源CMS推荐
查看>>
csharp skype send message in winform
查看>>
MMORPG 游戏服务器端设计--转载
查看>>
HDFS dfsclient写文件过程 源码分析
查看>>
ubuntu下安装libxml2
查看>>
nginx_lua_waf安装测试
查看>>
WinForm窗体缩放动画
查看>>
JQuery入门(2)
查看>>
linux文件描述符
查看>>
传值引用和调用引用的区别
查看>>
hyper-v 无线网连接
查看>>