消息推送技术

简介: 消息推送技术

1.推送技术的介绍:

传统互联网上数据交互一般有poll和push两种方式。poll典型使用场景是浏览网页,是用户主动发起请求,向服务器获取数据;push刚好相反,通过服务器直接发送数据给客户端,用户被动接受消息,类似于更加及时的短信。


PUSH是互联网上内容提供者和内容定制方之间的一种通信机制,利用在服务器端的程序把数据源源不断地推向客户端,大大提高客户机和服务器之间的交互性能。


第三方推送服务供应商:极光、云吧、个推、百度、蝴蝶等


推送的意义:通过个推的技术,APP可主动向其用户推送各类消息,结合精准的用户画像分析,给合适的用户在合适的场景下推送合适的内容,大幅度提升消息点击率、用户活跃度和留存率。


如:


智能家居:使用智能音箱播放歌曲,经过第三方推送服务器然后发到客户端的APP上,让你实时的知道播放了哪些歌曲。


游戏娱乐类:玩家实时互动(有新活动、做新任务、领新装备), 用户随时触达, 唤醒沉默用户, 提高ARPU值


社交媒体类:好友私信、热点资讯第一时间送达,不让用户错过任何有价值的消息、如你下载了新浪微博,有人@你或者私信你,那么不用打开APP(可能后台已经将应用给Kill掉了或者直接没有打开)就可以看到消息通知。


应用第三方推送服务的优势:


1.服务器主动连接客户端,消息毫秒级下发,推送形式多样。

2.为不同属性用户打上智能标签,实现精准推送和精细化运营。

3.冷热温数据引擎,结合地理围栏技术精准识别用户当下场景。

典型的使用第三方推送的应用:



54abe272e3837047bb3a4c64edca4a4f.png

2.不同终端的推送原理

iOS 系统的推送:APNS即 Apple Push Notification Service依托一个或几个系统常驻进程运作,是全局的(接管所有应用的消息推送),所以可看作是独立于应用之外,而且是设备和苹果服务器之间的通讯,而非应用的提供商服务器。你的例子里面,腾讯 QQ 的服务器(Provider)会给苹果公司对应的服务器(APNS)发出通知,然后再中转传送到你的设备(Devices)之上。当你接收到通知,打开应用,才开始从腾讯服务器接收数据,跟你之前看到通知里内容一样,但却是经由两个不同的通道而来。

Android系统推送:它像是传统桌面电脑系统做法。每个需要后台推送的应用有各自的单独后台进程,才能和各自的服务器通讯,交换数据。另外其实 Android 也有类似 APNS 的 GCM(Google Cloud Message),属于开发者可选,非强制。

所以你大概看出来区别,iOS 的消息推送机制面世之时是一种全新的解决方案(堪称平台中的平台),应用本身不能有常驻的后台进程,系统的开销少,内存使用更少,电量也更少(把更多的运算和资源开销放在云端,非设备端)。而 Android 的特点,虽然开销大,优点是更稳定快速,但不明显。

3.第三方推送的技术原理:

因为手机平台本身、电量、网络流量的限制,移动互联网应用在设计上跟传统 PC 上的应用很大不一样,需要根据手机本身的特点,尽量的节省电量和流量,同时又要尽可能的保证数据能及时到达客户端。

为了解决数据同步的问题,在手机平台上,常用的方法有2种。一种是定时去服务器上查询数据,也叫Polling。

还有一种手机跟服务器之间维护一个 TCP 长连接,当服务器有数据时,实时推送到客户端,也就是我们说的 Push。

从耗费的电量、流量和数据送达的及时性来说,Push 都会有明显的优势,但 Push 的实现和维护成本相对较高。在移动无线网络下维护长连接,相对也有一些技术上的难度。 极光推送在 Android 平台上是如何维护长连接。

本质上,APNs 与 GCM 是类似的技术实现原理:即系统层有一个常驻的 TCP 长连接,一直保持的长连接,即使手机休眠的时候也在保持的长连接。答案是:不会。这是手机的设计来做到的。TCP长连接有个心跳的时间,在国外可以很长比如30分钟,在国内则因为网络环境复杂一般10分钟。客户端发起的心跳,会短暂地消耗手机电能,但在这个心跳间隔期间,则消耗电能是很少的。当在心跳期间服务器端有推送信息过来时,客户端可以收到并做处理。

推送系统的各个组成要素

首先我们来看一下组成一个推送系统的几个要素


推送系统SDK:以jar的方式出现,集成于第三方客户端,解析第三方下行的数据,并把结果透传给第三方客户端;也可以上行第三方定制的客户端信息。


推送系统服务器:一侧负责维护与成千上万的SDK的长时连接,另一侧与第三方服务器对接,将第三方定制数据下行推送至个推SDK。


第三方服务器:数据推送的发起者,通过对接个推服务器,将数据发送至第三方客户端。


第三方客户端:第三方集成SDK的客户端,推送数据正真的接收者和展现者。


872a9e7868cabdc1b45fa3c4d869c114.png


说明:


AppID:应用ID,第三方在个推系统注册帐号并创建生成的唯一的应用标识。


ClientID:用于标识客户端身份,由第三方客户端获取并保存到第三方服务端。


UID:一般为第三方系统帐号体系中的用户标识。第三方服务端一般需要保存UID和ClientID的映射关系,进行消息推送时,通过UID查找到相应的ClientID,便可进行定向推送了。


参考资料:


   http://blog.jiguang.cn/jpush_wireless_push_principle/


   http://www.cnblogs.com/evakang/p/3756489.html


   https://www.zhihu.com/question/20667886/answer/15794992


目录
相关文章
|
JSON 运维 JavaScript
教你如何快速接入微信消息通知,使用消息推送服务,「传息」推送消息到个人微信
教你如何快速接入微信消息通知,使用消息推送服务,「传息」推送消息到个人微信
1821 0
|
2月前
|
负载均衡 网络协议 C#
C#实现WebSocket实时消息推送技术详解
C#实现WebSocket实时消息推送技术详解
100 1
|
5月前
|
前端开发 JavaScript Java
实现基于WebSocket的实时消息推送
实现基于WebSocket的实时消息推送
|
7月前
|
API Python
微信消息推送 有新发现 进来看
微信消息推送 有新发现 进来看
111 1
|
小程序 API 开发工具
小程序消息推送入门 (订阅消息推送)
小程序消息推送入门 (订阅消息推送)
775 0
|
消息中间件 前端开发 JavaScript
什么是消息推送?
使用Web 实时消息推送详解
360 0
|
API Go 开发者
微信消息推送神器pushplus介绍,让消息推送更简单
微信消息推送神器pushplus介绍,让消息推送更简单
|
小程序 开发者
小程序云开发实现订阅消息推送!
小程序云开发实现订阅消息推送!
小程序云开发实现订阅消息推送!
|
Java API 开发工具
极光:手机APP消息推送平台
简单来说:极光推送是一个免费的开源的手机APP消息推送平台(类似帅哥美女们常用的购物APP某宝、某东等,一些优惠券消息后台推送到你们手机上)。
860 0
极光:手机APP消息推送平台
|
API C#
C# 企业微信消息推送对接
C# 企业微信消息推送对接
1005 0
C# 企业微信消息推送对接