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项目主页( ) 下载2个文件: androidpn-server-0.5.0-bin.zip 和 androidpn-client-0.5.0.zip 分别是服务器和客户端的代码。详细的实现方式网上有不少文章。
1.androidpn服务端重启后客户端不会重连,这个非常悲剧
2.由于服务器不保存消息,造成了如果客户端当前离线就收不到消息
3.androidpn发送完消息就不管了,所以没有消息回执报表之类,造成没法做应用后续的数据分析用户体验的改善,这对于企业级的应用是个致命伤。
xmpp协议比较费电费流量,这个对当前智能机的消耗太大,在窄带网络和不稳定的(手机)网络都不是最优的选择。但总体来说,xmpp协议还是比较成熟的。
三、使用mqtt协议(想了解更多可以看)
轻量级的、基于代理的“发布/订阅”模式的消息传输协议。
优点:协议简洁、小巧、可扩展性强、省流量、省电,目前已经应用到企业领域(参考: ),且已有c++版的服务端组件rsmb。
缺点:不够成熟、实现较复杂、服务端组件rsmb不开源,部署硬件成本较高。
四、http轮循方式
定时向http服务端接口(web service api)获取最新消息。
优点:实现简单、可控性强,部署硬件成本低。
缺点:实时性差。
五、采用第三方服务
就是前面介绍的第三方推送,客户端只需要导入第三方提供的lib库,有第三方监理长连接,负责消息的接收/发送。同时对消息都有比较详细的报表数据,可以用于做数据分析、挖掘,改善用户体验。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
上一篇: 深入mysql并发插入优化详解