【Android学习】消息推送
1,XMPP协议(常用)1)概念它是一种基于XML的传递协议,具有很强的灵活性和可扩展性。它的特点是将复杂性从客户端转移到了服务器端。GTalk、QQ、IM等都用这个协议。包括GCM服务器底层也是采用XMPP协议封装的。2)优缺点优点:协议成熟、强大、可扩展性强、目前主要应用于许多聊天系统中,且已有开源的Java版的开发实例androidpn。androidpn(A...
1,XMPP协议(常用)
1)概念
它是一种基于XML的传递协议,具有很强的灵活性和可扩展性。它的特点是将复杂性从客户端转移到了服务器端。GTalk、QQ、IM等都用这个协议。
包括GCM服务器底层也是采用XMPP协议封装的。
2)优缺点
优点:
协议成熟、强大、可扩展性强、目前主要应用于许多聊天系统中,且已有开源的Java版的开发实例androidpn。
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协议还是比较成熟的。
缺点:
协议较复杂、冗余(基于XML)、费流量、费电,部署硬件成本高。
2,轮询
1)概念
客户端定时去服务端取或者保持一个长Socket,从本质讲这个不叫推送,而是去服务端拽数据。但是实现简单,
2)缺点
优点:
实现简单、可控性强,部署硬件成本低。
缺点:
实时性差、耗电,浪费用户流量等。
3,GCM(Google Cloude Messaging,C2DM,Android Cloud to Device Messaging)
1)概念
Google的推送。
Android自带的推送GCM可以帮助开发人员给他们的Android应用程序发送数据。它是一个轻量级的消息,告诉Android应用程序有新的数据要从服务器获取,或者它可能是一个消息,其中包含了4KB的payload data(像即时通讯这类应用程序可以直接使用该payload消息)。GCM服务处理排队的消息,并把消息传递到目标设备上运行的Android应用程序。
2)优缺点
优点:Google提供的服务、原生、简单,无需实现和部署服务端。
缺点:
1.要求Android 2.2以上,对于不少2.2以前的系统没法推送;
2.国内服务不稳定。而且不少国内的终端厂商纷纷把Google的服务去掉,替换上自己的。
3.需要用户绑定Google账号,但不少国内用户没有Google账号。
4,SMS
1)概念
通过短信方式
2)缺点
但是很难找到免费短信平台
3)国内几大厂家
①小米
②个推
③友盟
④百度云
⑤极光
⑥信鸽
⑦华为
5,MQTT协议
1)概念
IBM提供的一种推送服务,不太灵活。轻量级的、基于代理的“发布/订阅”模式的消息传输协议。
2)优缺点
优点:
协议简洁、小巧、可扩展性强、省流量、省电,目前已经应用到企业领域(参考: http://mqtt.org/software),且已有C++版的服务端组件rsmb。
缺点:
不够成熟、实现较复杂、服务端组件rsmb不开源,部署硬件成本较高。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)