Android之消息推送方案

Android平台下几种推送方案的基本情况以及优缺点:


一、使用GCM(Google Cloude Messaging)
Android自带的推送GCM可以帮助开发人员给他们的Android应用程序发送数据。它是一个轻量级的消息,告诉Android应用程序有新的数据要从服务器获取,或者它可能是一个消息,其中包含了4KB的payload data(像即时通讯这类应用程序可以直接使用该payload消息)。GCM服务处理排队的消息,并把消息传递到目标设备上运行的Android应用程序。

优点:

  • Google提供的服务、原生、简单,无需实现和部署服务端。

缺点:

  • 要求Android 2.2以上,对于不少2.2以前的系统没法推送;
  • 国内服务不稳定。而且不少国内的终端厂商纷纷把Google的服务去掉,替换上自己的。
  • 需要用户绑定Google账号,但不少国内用户没有Google账号。

二、使用XMPP协议(Openfire+Spark+Smark)
XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性,有很强的可扩展性。包括上面讲的GCM服务器底层也是采用XMPP协议封装的。
优点:

  • 协议成熟、强大
  • 可扩展性强、目前主要应用于许多聊天系统中
  • 已有开源的Java版的开发实例androidpn。

缺点:

  • 协议较复杂、冗余(基于XML)
  • 费流量
  • 费电
  • 部署硬件成本高

AndroidPN(Android Push Notification)就是基于 XMPP 开源组件的一套整合方案,服务端基于Openfire、客户端基于Smack。到AndroidPN项目主页( http://sourceforge.net/projects/androidpn/ )

下载2个文件:

  • androidpn-server-0.5.0-bin.zip 服务器代码
  •  androidpn-client-0.5.0.zip 客户端的代码

详细的实现方式网上有不少文章。
  1.androidpn服务端重启后客户端不会重连,这个非常悲剧
  2.由于服务器不保存消息,造成了如果客户端当前离线就收不到消息
  3.androidpn发送完消息就不管了,所以没有消息回执报表之类,造成没法做应用后续的数据分析用户体验的改善,这对于企业级的应用是个致命伤。
XMPP协议比较费电费流量,这个对当前智能机的消耗太大,在窄带网络和不稳定的(手机)网络都不是最优的选择。但总体来说,XMPP协议还是比较成熟的。
三、使用MQTT协议
轻量级的、基于代理的“发布/订阅”模式的消息传输协议。
优点:

  • 协议简洁、小巧
  • 可扩展性强
  • 省流量
  • 省电

目前已经应用到企业领域(http://mqtt.org/software),且已有C++版的服务端组件rsmb。
缺点:

  • 不够成熟
  • 实现较复杂
  • 服务端组件rsmb不开源
  • 部署硬件成本较高

四、HTTP轮循方式
定时向HTTP服务端接口(Web Service API)获取最新消息。
优点:

  • 实现简单
  • 可控性强
  • 部署硬件成本低

缺点:

  • 实时性差

五、采用第三方推送服务

就是前面介绍的第三方推送,客户端只需要导入第三方提供的lib库,有第三方管理长连接,负责消息的接收/发送。同时对消息都有比较详细的报表数据,可以用于做数据分析、挖掘,改善用户体验。

目前常见的第三方:极光推送个推MobPush。(购买VIP服务效果更好,可接入手机厂家直接推送)

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值