远程推送

就是从远程server推送消息给client的通知。当然须要联网。

远程推送服务APNs (Apple Push NotificationServices)

为什么须要远程推送通知?

传统获取数据的局限性是仅仅要用户关闭了app。就无法跟app的server沟通。无法从server上获得最新的数据内容

而远程推送通知能够解决问题,无论用户打开还是关闭app,仅仅要联网了,都能接收到server推送的远程通知。

我们先从网络连接開始了解下。

http协议:是个短连接,一个请求一个响应就结束了。

典型的网络请求。

tcp/ip协议:三次握手连接,仅仅要server或者client不主动断开。保持连接着。大概QQ聊天就是这样的协议了。

推送,我们从QQ聊天着手吧。

A用户和B用户聊天:

1.A和B用户同一时候在线,跟server保持连接状态下:“A发送消息给B:在吗?,B回复:在的。”我们分析下这个过程。

->A将消息“在吗?”发送给QQserver,此时由于B与server也保持连接,因此server将消息发送给B,相同B的回复也反向传输成立。

2.A发送消息给B。但B不在线。

->这样的情况下,server无法将A的消息发送给B了。那我们手机不在线的情况下是怎么收到A的消息的?

那我们就不得不拿出来神器远程推送了。远程推送是通过苹果的APNsserver来实现的。仅仅要你的苹果设备联网状态,你的设备就与苹果的APNsserver保持一个长连接状态。

那我们就能够想到。A将消息发送给server时,server将消息发送给APNsserver的方式能够实现将消息发送给B了,那详细是怎么实现的呢?我们往下看:

1. A与B安装QQclient。登录自己的QQ号码时。A和B将自己的QQ号码+苹果设备的DeviceToken发送给QQserver,QQserver将这一组数据保存在自己的数据库中。

获取DeviceToken方法。在AppDelegate.m中:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
}

2.A将消息“在吗?”发送给B时,server发现B不在线,这时,server从数据库中查找B相应的DeviceToken,将B的DeviceToken+消息“在吗?”发送给APNsserver。

3.APNsserver收到消息后,找到B相应的DeviceToken,将消息“在吗?”发送给B的设备。

那么另一个疑问。APNsserver将消息发送给B的设备。那怎么知道是QQclient呢?

事实上说白了。这个事情就被DeviceToken包括了,当你获取DeviceToken时,苹果偷偷的将设备的UDID和APP和bundle identifier发送给苹果server。苹果server返回给你了DeviceToken。因此QQserver将消息+B的DeviceToken发送给苹果的APNsserver时,苹果已经知道了是哪个client了。

----end

iOS远程推送原理的更多相关文章

  1. iOS远程推送原理及实现过程

    ➠更多技术干货请戳:听云博客 推送通知,是现在的应用必不可少的功能.那么在 iOS 中,我们是如何实现远程推送的呢?iOS 的远程推送原理又是什么呢?在做 iOS 远程推送时,我们会遇到各种各样的问题 ...

  2. iOS 远程推送原理及实现

    关于iOS 实现消息推送的原理: 1.provide[server]把要发送的消息,目的IOS设备标识打包.发送给APNS 2.APNS在自身已注冊Push服务的IOS设备列表中.查找有对应标识的IO ...

  3. IOS远程推送

    IOS远程推送 一.关于推送通知 推送通知,也被叫做远程通知,是在iOS 3.0以后被引入的功能.是当程序没有启动或不在前台运行时,告诉用户有新消息的一种途径,是从外部服务器发送到应用程序上的.一般说 ...

  4. iOS 远程推送通知

    1.什么是推送通知 在某些特殊情况下,应用程序被动收到的以不同种界面形式出现的提醒信息 推送通知的作用:可以让不在前台运行的app通知app发生了改变 iOS中得推送通知种类 远程推送通知(Remot ...

  5. [iOS]iPhone推送原理

    推送原理,先上图 说一下原理吧, 由App向iOS设备发送一个注册通知 iOS向APNs远程推送服务器发送App的Bundle Id和设备的UDID APNs根据设备的UDID和App的Bundle ...

  6. iOS远程推送1

    一.APNS 远程推送 1.所有的苹果设备,在联网状态下,都会与苹果服务器建立长连接. 2.长连接:就是只要联网了,就一直建立连接. 3.长连接的作用:时间校准,系统升级,查找我的iPhone. 4. ...

  7. IOS - 消息推送原理和实现

    一.消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图1-1: 1.Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Pr ...

  8. iOS远程推送之友盟Push

    更新记录: 1.2015年10月23日上午10:10分更新,优化了该类,去除了不必要的方法. ----------------------------------------------------- ...

  9. iOS 消息推送原理及实现Demo

    一.消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图1-1: 1.Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Pr ...

随机推荐

  1. RestTemplate Hashmap变为LinkedHashMap源码解读

    使用restTemplate远程调用服务,正常应该接收List<HashMap>数据,但实际却是List<LikedHashMap>经过不断地debug,终于找到了数据被转换成 ...

  2. 第4节 hive调优:动态分区调整问题

    执行如下截图中的语句时卡住了: 原因:yarn未启动,hive底层是要提交mapreduce到yarn上才能计算结果的. 之前启动yarn时,未执行jps查看是否已经启动.其实未启动成功: [root ...

  3. 内置函数filter和map

    filter filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回 ...

  4. 【简●解】[AHOI2009]中国象棋

    [题目大意] 叫你在\(n×m\)的棋盘上放若干个炮(可以是0个),使得没有一个炮可以攻击到另一个炮,问有多少种放置方法. [关键词] \(DP\) 分类讨论 乘法和加法原理 [分析] 仔细观察就会发 ...

  5. bzoj 3555 企鹅QQ

    https://www.lydsy.com/JudgeOnline/problem.php?id=3555 枚举每一位字符,计算字符两侧的哈希值,然后进行比较,用map或排序记录出与其相同的字符串数量 ...

  6. uncategorized SQLException for SQL []; SQL state [99999]; error code [17004]; 无效的列类型: 1111; nested exception is java.sql.SQLException: 无效的列类型: 1111

    WHERE 的条件取值时添加上jdbcType=NUMBER这样的配置 参考[1]:https://blog.csdn.net/fyhjuyol/article/details/45483167

  7. 为公司内部搭建CA

    步骤一 首先我们要知道CA的配置文件 openssl的配置文件:/etc/pki/tls/openssl.cnf 我们打开这个配置文件 这文件中很多跟CA相关的信息如图 解释: 我们可以搭建好几个CA ...

  8. Linux基础学习-通过VM安装RHEL7.4

    虚拟机安装RHEL7.4 1.VM虚拟机设置 这里我们配置的虚拟机为1核1G,50G硬盘,NAT模式 2.Linux安装 这里时区我们选择中国上海,时间需要调整一下相差8小时. 这里添加一下中文语言支 ...

  9. 5.12-leepcode 作业详解

    leepcode 作业详解 1.给定一个整数数组,判断是否存在重复元素.如果任何值在数组中出现至少两次,函数返回 true.如果数组中每个元素都不相同,则返回 false. 正确解答 class So ...

  10. 如何在小程序实现图片lazy-load懒加载效果

    自从跳一跳出现之后小程序又开始频繁出现了,在学习过程中发现小程序虽然好但是由于api不完善导致开发过程中有很多的坑,重点是网上相对小程序出现坑时解决方案显然比较少,小程序最让人觉得痛心疾首之一就是无法 ...