首页 > 代码库 > 安卓推送技术方案实现探讨

安卓推送技术方案实现探讨

背景介绍

随着苹果产品的风靡,推送技术在国内也越来越热门。推送最开始用于邮件系统。随着iPhone 和 Android 手机的风靡,逐渐在手机上也越来越常见。不少手机客户端也时常推送一些消息。

 

推送技术的应用

推送技术在手机上的应用主要有两块:广告推送、SNS信息推送。

l  广告推送:给目前有一定安装量但没有盈利模式的手机应用开发者带来了一定希望,但要注意推送的频度和内容选中,不然会因为推送的东西用户不感兴趣造成打扰。

l  SNS信息推送:主要用于QQ空间、人人网、微博和天涯论坛等web2.0社区网站推送好友的留言等,可以用来提升用户黏性。

推送的想象空间很大,和电商团购、新闻资讯、生活服务等类应用都有很强的结合点:

比如电商团购应用,推送可以

1)        提供限时促销信息(公车秒杀)

2)        根据商品销售情况进行即时营销活动(热卖推荐)

3)        提供个性化商品信息进行精确营销(关联推荐)

甚至,推送和相亲类的APP也可以有如下结合点:

1)        线下活动或电视相亲类节目参与通知发送

2)        每周推荐一位相亲对象,并事前通过多媒体方式展示,为高级会员提供高附加值服务

3)        关注及时提醒,不再错过良缘

 

 

客户端/服务器通信的两种方式:

服务端和客户端推送有两种方式,分别是Pull 和 Push。

l  Pull :由客户端定时访问服务器,询问是否有新信息。而Push则在手机客户端和服务器之间建立持久连接通道,服务端一有消息就通过通道发给手机。

l  Push:相比Pull,Push推送的消息是实时的,而且更节省手机的电量和流量,不需要定时访问服务器。Pull轮询方式一般信息会有1到10分钟不等的延时,且耗电量也比Push方式消耗得多。

 

 

推送解决方案

目前Android上主要的推送实现方案有以下几种:

方案一、Google Cloud Messageing

Google在Android上标配了自己的推送GCM(Google Cloud Messageing),可以帮助开发人员给他们的Android应用程序发送数据。

GCM使用比较简单,但有下面三个缺陷也导致了GCM在国内基本不可用:

1.GCM要求Android系统必须是2.2以上的版本,所以不少2.2以前的系统没法推送

2.国内服务不稳定,且不少国内的终端厂商纷纷把Google的服务去掉,替换上自己的。

3.需要用户绑定Google账号,但不少国内用户没有Google账号。

 

方案二、采用XMPP协议

XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性,有很强的可扩展性。包括上面讲的GCM服务器底层也是采用XMPP协议封装的。

XMPP协议缺点也很明显:费电费流量,这个对当前智能机的消耗太大,在窄带网络和不稳定的(手机)网络都不是最优的选择。

 

方案三、采用MQTT协议

MQTT是个轻量级的、基于代理的“发布/订阅”模式的消息传输协议。

MQTT协议也有自己的缺点:协议复杂,部署成本比较高,还不够成熟。

 

方案四、采用第三方服务

目前有不少第三方提供了类似服务,客户端只需要嵌入第三方提供的lib库,由第三方建立长连接,负责消息的接收/发送。国外的parse、pubnub做的很不错,基本版也是免费的,但是由于大家都懂的原因国外的服务在国内经常访问不了。

 

国内做得不错的有个推,新浪微博android上的推送也是他们做的,并发量达到5000tps(每秒钟可以处理5000个事务),日分发消息据说超过1亿条,消息到达率在96%以上,延时小于250ms,换句话说消息会在1/4秒内到达。同时对于消息都有详细的报表数据,可以用于做数据分析挖掘和用户体验的改善,总体来说是开发成本最低的。

个推平台有两种接入模式:

l  群发模式

ü   提供群发管理后台,满足消息群发需求

ü   无需设备部署,当天开通账号,客户端集成SDK发布即可使用

l  业务整合模式

如果希望推送与业务深度结合,还可以使用其提供的业务整合模式。

ü   提供服务端API接口,可以与客户已有业务系统深度整合

ü   客户一般经过1-2周开发改造即可实现新功能的上线

 

通过对推送四种方案的比较,可以发现每种方案都有自己的优缺点。但总体上来说,第三方推送接入相对最简单,开发也比较容易。无论是从消息的到达率、集成开发成本、并发量还是统计报表的完善程度,个推都表现的非常出色。有兴趣的朋友可以到如下地址体验:http://www.igetui.com