Android 推送机制详解

本文深入解析了Android平台的推送方式,包括pull推送、push推送、C2DM、XMPP推送等,详细阐述了每种方式的工作原理、优缺点及实现步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android 推送机制详解

1、android平台的推送方式

1.1android pull推送方式

Pull方式方式,顾名思义,就是拉。

这种方式就是客户端从服务器端拉取数据(Data)下来,具体是如何拉的呢?

客户端会和服务器端建立一个网络连接,然后用这个链接,去轮询服务器的消息接口。

如果有消息过来就会被客户端获取到。

缺点:

耗电,因为要通过建立网络连接,设置频率去轮询,要消耗一定时间的CPU运行时间,比较消耗电量和网络流量。

优点:

编程方便(其实也不是方便的啦,哈哈)

1.2 android push推送方式

Push的方式有好几种。

第一种,push(message)通过第三方短信平台给要推送的客户端发送短信的方式来实现推送。

具体通过如下步骤:

第三方平台发送短信到目标手机;

目标手机接收到短信,解析短息的意图;

目标手机发送网络请求到服务器端请求推送数据(Data)。

 

缺点:

短信平台比较费钱。

优点:

省点。

 

第二种,push长连接方式。

如何维持android 客户端和服务器端的长连接?

设置网络请求的心跳链接,用AlarmManager来实现心跳链接,设置一个链接的频繁度。

当服务器给客户端发消息时,或者客户端和服务器的这个链接timeout时,长连接就回断掉,所以我们需要用心跳链接,来重新建立长连接。

 

注意,在建立连接的时候需要发送长度为0的数据来保持连接,不然NAT映射表会失效。

 

*我们知道我们移动端要和Internet进行通信,必须通过运营商的网关,所以,为了不让NAT映射表失效,我们需要定时向Internet发送数据,因为只是为了不然NAT映射表失效,所以只需发送长度为0的数据即可。

 

第三种,用C2DMgoogle提供的云端推送服务,不过你懂的,在国内用不了哦。哈哈

C2DM原理图:


主要通过如下几个步骤:

1、客户端发送 userAccout 信息,账户信息到云端。

2、然后云端返回一个注册的ID(Registration ID)

3、然后根据这个注册ID(Registration ID)user account信息发送到自己的服务器上,

4、服务器发送registration ID+Data 给云端服务器,

5、云端服务器发送data给目标机。

 

第四种,push(XMPP)方式推送。

科普,XMPP是一种轻量级的基于XML可拓展标记语言,实际上就是TCP协议的XML流。

XMPP推送过程图解:


主要步骤如下:

1、客户端发送用户数据(目标机的IMIE,版本等等信息)给服务器端。

2、服务器端认证用户目标机。

3、认证通过,服务器和客户端建立session会话。

4、服务器端发送推送消息给客户端。

 

 

XMPP服务器端架构图:


 

解释下最顶上的四个Manager:

Session Manager 是管理会话的。

Auth Manager是管理认证的。

Presence Manager是管理用户登录状态的

Notification Manager是管理推送消息的。

 

附:android pn项目开源源码主页:

服务器端和客户端都是java语言的哦。哈哈。

http://sourceforge.net/projects/androidpn/

 

 

 

 

安卓推送方案及比较 经常有朋友困扰于Android上面实现推送的技术,希望知道各种方案的优缺点、性能、开发难度等,于是特意写了这篇文章。 方案一: Google官方的服务: 但,通过对比研究发现C2DM机制存在以下缺点: 1)GCM要求Android系统必须是2.2以上的版本,所以对于不少2.2以前的系统没法推送 2)国内服务不稳定。而且不少国内的终端厂商纷纷把Google的服务去掉,替换上自己的。 3)需要用户绑定Google账号,但不少国内用户没有Google账号。 方案二: 利用MQTT协议,broker做代理服务器,但是随着用户的增多这个方案会有问题,因为broker的连接数有上限,到了一定程度后就无法连接了,这也就导致消息很难发送出去。 总之,连接数量有限制。 方案三: 基于XMPP协议,很多人都建议使用这个,谷歌官方的C2DM也是基于XMPP研发的,使用这个方案不会依赖android系统,也不依赖于谷歌服务器。 •XMPP协议比较费电费流量,对当前智能机的消耗太大 •在窄带网络和不稳定的(手机)网络都不是最优的选择。 方案四: 最近新出的一种是APNS,这个也不需要自己架设服务器(可以查看http://www.push-notification.mobi/),很简单,自己不用开发服务端。不过很少有人去用,不是很稳定 主要有以下特点: •快速集成:提供一种比C2DM更加快捷的使用方式,避免各种限制. •无需架设服务器:通过使用"云服务",减少额外服务器负担. •可以同时推送消息到网站页面,android 手机 •耗电少,占用流量少. 第三方服务: 目前也有不少第三方提供了推送服务,由于接入简单、服务比较专业可靠、还提供报表等,不少国内开发者和企业都采用这种方案。比如国外的parse、pubnub,国内的个推,都是这类。36kr前段时间有报道,新浪微博就是用的一家叫“个推”的第三方服务(有兴趣的朋友可以前往查看 http://www.igetuicom) 特点: •方便,易集成 •没有C2DM中的版本限制和必须用gmail绑定 •云服务,不用架设自己的服务器 •系统稳定、专业,能够承受高并发支持 •简单高效,并且省电
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值