iOS远程推送原理
远程推送
就是从远程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远程推送原理的更多相关文章
- iOS远程推送原理及实现过程
➠更多技术干货请戳:听云博客 推送通知,是现在的应用必不可少的功能.那么在 iOS 中,我们是如何实现远程推送的呢?iOS 的远程推送原理又是什么呢?在做 iOS 远程推送时,我们会遇到各种各样的问题 ...
- iOS 远程推送原理及实现
关于iOS 实现消息推送的原理: 1.provide[server]把要发送的消息,目的IOS设备标识打包.发送给APNS 2.APNS在自身已注冊Push服务的IOS设备列表中.查找有对应标识的IO ...
- IOS远程推送
IOS远程推送 一.关于推送通知 推送通知,也被叫做远程通知,是在iOS 3.0以后被引入的功能.是当程序没有启动或不在前台运行时,告诉用户有新消息的一种途径,是从外部服务器发送到应用程序上的.一般说 ...
- iOS 远程推送通知
1.什么是推送通知 在某些特殊情况下,应用程序被动收到的以不同种界面形式出现的提醒信息 推送通知的作用:可以让不在前台运行的app通知app发生了改变 iOS中得推送通知种类 远程推送通知(Remot ...
- [iOS]iPhone推送原理
推送原理,先上图 说一下原理吧, 由App向iOS设备发送一个注册通知 iOS向APNs远程推送服务器发送App的Bundle Id和设备的UDID APNs根据设备的UDID和App的Bundle ...
- iOS远程推送1
一.APNS 远程推送 1.所有的苹果设备,在联网状态下,都会与苹果服务器建立长连接. 2.长连接:就是只要联网了,就一直建立连接. 3.长连接的作用:时间校准,系统升级,查找我的iPhone. 4. ...
- IOS - 消息推送原理和实现
一.消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图1-1: 1.Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Pr ...
- iOS远程推送之友盟Push
更新记录: 1.2015年10月23日上午10:10分更新,优化了该类,去除了不必要的方法. ----------------------------------------------------- ...
- iOS 消息推送原理及实现Demo
一.消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图1-1: 1.Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Pr ...
随机推荐
- 暑假集训 || 概率DP
Codeforces 148D 考虑状态转移..https://www.cnblogs.com/kuangbin/archive/2012/10/04/2711184.html题意:原来袋子里有w只白 ...
- dos command
dos command md 创建目录 rd 删除目录 cd\ 返回到根目录 cd.. 返回到上一级目录 cd 进入指定目录 dir 列出当前目录下的文件夹及文件 echo 文件内容>文件名称. ...
- Low Speed High Torque Hydraulic Motor: Motion Performance
Crank connecting rod type low speed high torque hydraulic motor is used earlier, which is called Sta ...
- css--字体和文本样式
文字样式属性 字体:font-family 文字大小:font-size 文字颜色:font-color 文字粗细:font-weight 文字样式:font-style font-family字体属 ...
- 【C语言项目】贪吃蛇游戏(上)
目录 00. 目录 01. 开发背景 02. 功能介绍 03. 欢迎界面设计 3.1 常用终端控制函数 3.2 设置文本颜色函数 3.3 设置光标位置函数 3.4 绘制字符画(蛇) 3.5 欢迎界面函 ...
- UIWebView与js那些事
UIWebView是IOS SDK中渲染网面的控件,在显示网页的时候,我们可以hack网页然后显示想显示的内容.其中就要用到javascript的知识,而UIWebView与javascript交互的 ...
- MYSQL:WARN: Establishing SSL connection without server's identity verification is not recommended.
WARN: Establishing SSL connection without server's identity verification is not recommended. Accordi ...
- layui二次封装
最近一直用layui进行页面的重构,这个框架十分适合我们后台人员开发.简单易用,但是layui本身不支持双向绑定,所以很多情况下,我们在支持动态的控件加载时,需要反复刷新.这里我自己封装了一个comm ...
- MySQL数据库文件
MySQL数据库文件 本文档从MySQL数据库和存储引擎层面介绍各种类型的文件. 参数文件(my.cnf) 错误日志(error log) 二进制日志文件(binary log) 慢查询日志(slow ...
- JS 获取字符串中的url并返回其下标索引
//获取字符串中的url极其下标索引 function getHttpUrlArray(s) { var s1 = s.match(/http.*/); if(s1 == null) { return ...