iOS远程推送原理

远程推送

就是从远程服务器推送消息给客户端的通知,当然需要联网。

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

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

传统获取数据的局限性是只要用户关闭了app,就无法跟app的服务器沟通,无法从服务器上获得最新的数据内容

而远程推送通知可以解决这个问题,不管用户打开还是关闭app,只要联网了,都能接收到服务器推送的远程通知。

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

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

tcp/ip协议:三次握手连接,只要服务器或者客户端不主动断开,保持连接着。大概QQ聊天就是这种协议了。

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

A用户和B用户聊天:

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

->A将消息“在吗?”发送给QQ服务器,此时因为B与服务器也保持连接,因此服务器将消息发送给B,同样B的回复也反向传输成立。

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

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

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

那我们就可以想到,A将消息发送给服务器时,服务器将消息发送给APNs服务器的方式可以实现将消息发送给B了,那具体是怎么实现的呢?我们往下看:

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

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

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

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

3.APNs服务器收到消息后,找到B对应的DeviceToken,将消息“在吗?”发送给B的设备。

那么还有一个疑问,APNs服务器将消息发送给B的设备,那怎么知道是QQ客户端呢?

其实说白了,这个事情就被DeviceToken包含了,当你获取DeviceToken时,苹果偷偷的将设备的UDID和APP和bundle identifier发送给苹果服务器,苹果服务器返回给你了DeviceToken,因此QQ服务器将消息+B的DeviceToken发送给苹果的APNs服务器时,苹果已经知道了是哪个客户端了。

----end

版权声明:本文为博主原创文章,转载请注明来源:http://blog.csdn.net/zhangwenhai001

时间: 2024-10-07 22:42:47

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

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

推送通知,是现在的应用必不可少的功能.那么在 iOS 中,我们是如何实现远程推送的呢?iOS 的远程推送原理又是什么呢?在做 iOS 远程推送时,我们会遇到各种各样的问题.那么首先让我们准备一些做推送需要的东西.我们需要一个付费的苹果开发者账号(免费的不可以做远程推送),有了开发者账号,我们可以去苹果开发者网站,配置自己所需要的推送的相关证书.然后下载证书,供我们后面使用,详细的证书配置过程,我们下面再说. 首先我们要说说iOS推送通知的基本原理: 苹果的推送服务通知是由自己专门的推送服务器AP

iOS 远程推送原理及实现

关于iOS 实现消息推送的原理: 1.provide[服务器]把要发送的消息,目的IOS设备标识打包,发送给APNS 2.APNS在自身已注册Push服务的IOS设备列表中,查找有相应标识的IOS设备,并将消息发送到IOS设备 3.IOS设备把发送的消息传递给对应的应用程序,并按照设定弹出Push通知 消息推送实现 1.生成*.certSigningRequest文件,步骤如下: [MacBook-应用程序-实用工具-钥匙串访问-证书助手-从证书机构求证书-证书信息 (填写你的有关信息,并将其保

IOS远程推送

一.关于推送通知 推送通知,也被叫做远程通知,是在iOS 3.0以后被引入的功能.是当程序没有启动或不在前台运行时,告诉用户有新消息的一种途径,是从外部服务器发送到应用程序上的.一般说来,当要显示消息或下载数据的时候,通知是由远程服务器(程序的提供者)发送,然后通过苹果的推送通知服务(Apple Push Notification Service,简称apns)推送到设备的程序上. 推送的新消息可能是一条信息.一项即将到期的日程或是一份远程服务器上的新数据.在系统上展现的时候,可以显示警告信息或

远程推送原理

远程推送原理:(必须长链接) 1.首次登陆:发送设备的UDID&app的BundelID 2.苹果加密后:返回一个deviceToken 3.QQ应用给QQ服务器发送deviceToken 4.存储到QQ服务器 5.李四给张三发消息(假设张三应用不在前台) 6.查询张三的deviceToken 7.通知苹果服务器:deviceToken&消息内容 8.APNS通过deviceToken找到张三的设备

iOS 远程推送 根据后台推送内容的不同跳转指定页面

转发自:http://www.jianshu.com/p/4531bd6e3a01 iOS 远程推送,根据后台推送内容的不同, 跳转指定页面 我目前的需求是总体分为两类: 1:私信.关注.点赞一类,只需跳转到对应的tabbar 中的某一项 2:每日精品文章项目推送,分两个子类 (1)如果当前已经打开 文章项目页面,则直接刷新,不推出新页面 (2)如果当前未打开此页面,则push出新的文章项目页面 iOS 推送情况分为 应用未启动的 情况: 打开应用 ,推送信息 会通过 - (BOOL)appli

[iOS]iPhone推送原理

推送原理,先上图 说一下原理吧, 由App向iOS设备发送一个注册通知 iOS向APNs远程推送服务器发送App的Bundle Id和设备的UDID APNs根据设备的UDID和App的Bundle Id生成deviceToken再发回给App App再将deviceToken发送给远程推送服务器(商家自己的服务器), 由服务器保存在数据库中 当商家想发送推送时, 在远程推送服务器中输入要发送的消息并选择发给哪些用户的deviceToken,由远程推送服务器发送给APNs APNs根据devic

iOS远程推送,从机制到实现,尽量详细

本人第一次写博客,写的不好的地方大家请见谅. 本文主要参考了http://blog.csdn.net/showhilllee/article/details/8631734,感谢showhilllee详细的讲解.因为在做的过程中有些自己的理解和变化,所以自己再写一遍关于推送的详细博客. 本文分为四部分介绍: 一.解释APNS远程推送 二.配置推送的证书 三.导出自己服务器可用的证书 四.代码实现设备注册推送.获取推送消息 好了,现在开始正式讲解推送. 一.首先上一个老图,苹果很早就给大家的,推送

14 - 苹果远程推送原理

APNs是远程推送通知服务,就是从远程服务器推送给客户端的通知(需要联网) 首先,传统的获取数据的方法存在局限性:只要用户关闭了app,就无法和app的服务器进行沟通,无法从服务器上获得最新的数据内容 APNs是为了苹果为了解决用户不能即时从服务器获得数据的解决方案 无论打开或者关闭app,只要是联网了,都可以接收到服务器推送的远程通知 所有的苹果设备,在联网的状态下,都会与苹果服务器建立长连接——即只要联网了,就一直建立连接———长连接的作用,如时间校准,系统升级,查找我的iphone等 AP

IOS 消息推送原理及实现总结

一.消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图1-1: 1-1 1.              Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Provider可以理解为服务端[消息的发起者]): 2.              APNS:Apple Push Notification Service[苹果消息推送服务器]: 3.              iPhone:用来接收APNS下发下来的消息: 4.