Android几种消息推送方案总结

首先看一张国内Top500 Android应用中它们用到的第三方推送以及所占数量:

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

一、使用GCM(Google Cloude Messaging)

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

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

缺点:1.要求Android 2.2以上,对于不少2.2以前的系统没法推送;

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

     3.需要用户绑定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/)

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

优点:协议简洁、小巧、可扩展性强、省流量、省电,目前已经应用到企业领域(参考: http://mqtt.org/software),且已有C++版的服务端组件rsmb。

缺点:不够成熟、实现较复杂、服务端组件rsmb不开源,部署硬件成本较高。

四、HTTP轮循方式

定时向HTTP服务端接口(Web Service API)获取最新消息。

优点:实现简单、可控性强,部署硬件成本低。

缺点:实时性差。

五、采用第三方服务

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

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

时间: 2024-08-03 00:07:29

Android几种消息推送方案总结的相关文章

怎样使用android客户端的消息推送开源包androidpn。

问题描述 怎样使用android客户端的消息推送开源包androidpn. 下载了androidpn 的server和client 0.5.0的版本,具体怎么部署,客户端怎么实现,服务端怎么实现呢,最好有实际经验的朋友帮忙解答一下.非常感谢.

Android应用中消息推送完美方案分享

1.消息推送基础 消息推送,就是在互联网上通过定期传送用户需要的信息来减少信息过载的一项新技术.推送技术通过自动传送信息给用户,来减少用于网络上搜索的时间.它根据用户的兴趣来搜索.过滤信息,并将其定期推给用户,帮助用户高效率地发掘有价值的信息 当我们开发需要和服务器交互的移动应用时,基本上都需要和服务器进行交互,包括上传数据到服务器,同时从服务器上获取数据. 一般情况下,客户端与服务器之间通讯客户端是主动的,但这就存在一个问题就是一旦服务器数据有更新或者服务器要下发通知给客户端只能等客户端连接的

Android端新消息推送

问题描述 当退出软件时却未退出环信登录状态,那么:1.如何取消新消息的推送?2.当有新消息推送过来时,如何取消铃音提示?3.我只想在10:00--18:30这段时间内接收新消息推送,其余时间不接收新消息推送,该怎么做? 解决方案 public synchronized void onNewMsg(EMMessage message) {        if(EMChatManager.getInstance().isSlientMessage(message)){            retu

android消息推送-Android消息推送干什么用呀?

问题描述 Android消息推送干什么用呀? Android的消息推送干什么用呀?是从服务器推送过来的么?还是服务器有更新之后,手机端解析了数据之后,在用户打来软件的时候再推送? 解决方案 服务器调用第三方的接口,推送到你手机上,提醒你某个业务有新动作了,即使app不启动,也是可以推送的,微信,qq你总该用过吧 解决方案二: android消息推送Android消息推送Android中的消息推送 解决方案三: 信鸽和JPush都挺好用的

个推是移动消息推送技术服务商

个推现在每天向用户分发8亿条消息,但他们却觉得推送得太多了,未来的推送应该是"在合适的时间.合适的场景把合适的内容推送给合适的人".今天,个推在GMIC大会上发布了他们即将在6月面向所有开发者的个推2.0 Smart Push,希望帮助app摒弃打扰用户的盲目推送. 个推是移动(Android & iOS)消息推送技术服务商,服务的app包括新浪微博.去哪儿.招行.墨迹.唱吧.美图秀秀等.根据个推CEO方毅的介绍,个推目前在第三方推送服务的部署量上占了90%的市场份额,接入应用

APP消息推送到达率评估方案

近期社区里许多开发者问到了移动APP Android端的消息推送到达率的对比方案,正好近期看到了一篇CSDN的博文,介绍了作者所在公司总结的消息推送到达率的评估方案,比较合理,MARK一下,也供广大开发者参考. 原文地址如下:http://blog.csdn.net/asialiyazhou/article/details/60954636

后台-【PHP实现微信类似的消息推送功能】

问题描述 [PHP实现微信类似的消息推送功能] 最近在开发一个项目,想做一个类似微信后台往前端用户推送消息的功能 1:首先问一下有没有好的这种PHP实现这种聊天的框架可以使用? 2:如果1不满足的话,有谁做过类似的功能,能够贡献一下参考代码吗? 3:是否还有更好的实现方式? 先谢谢大家了,这个项目比较赶,还请各位技术大牛帮忙回答一下,再次感谢 解决方案 PHP做到实时的消息推送会比较困难,对服务器端的压力比较大,可以考虑使用ajax间隔轮询的方法来进行. 如果想做到特别实时的,需要使用comet

Parse Server 支持 iOS 和安卓的消息推送

Parse Server 是前些天 Facebook 刚刚开源的兼容 Parse.com API 的服务器软件.目前该项目宣布支持 iOS 和 Android 平台的消息推送.可通过 PushAdapter 来实现. 使用方式: curl -X POST \ -H "X-Parse-Application-Id: YOUR_APP_ID" \ -H "X-Parse-Master-Key: YOUR_MASTER_KEY" \ -H "Content-Ty

Android顶栏定时推送消息_Android

在用安卓设备时,经常会应用到弹出推送消息.下面在此把我之前写的推送代码分享给大家,供大家参考,有不同见解的朋友欢迎提出,共同学习进步! 最近搜索看这个的朋友比较多.这个也只是单独的内置推送.时时推送与服务器关联 我们可以用SDK云推送来实现我们所需的需求.相关介绍内容.往下移! 首先XML <!-- 安卓推送服务 --> <service android:name=".MessageService" android:enabled="true" a