网站首页  词典首页

请输入您要查询的论文:

 

标题 基于Android的消息推送的研究与实现
范文 闫俊英 李熙明 曹锡贵
摘 要:随着移动互联网的快速发展,消息推送在移动互联网领域智能终端的应用越来越广泛,成为智能终端产品实时发布信息的一种重要手段。本文主要研究了目前基于Android的消息推送的几种解决方案,并选择基于XMPP协议,实现了一个基于Android的消息推送系统。
关键词:Android,消息推送,XMPP协议
1.引言
随着移动互联网的发展,智能手机和各种智能终端的用户越来越多,移动互联网已经成为人们获取信息的一个最佳平台。如何及时或定时地向用户发送各种信息越来越成为目前研究的热点,消息推送就被用在了传送信息的各个领域。IOS平台已经提供了官方的消息推送的解决方案[1],但是Android平台的解決方案却比较复杂。本文分析了Android平台的消息推送的几种不同的解决方案,最后基于XMPP协议实现了一个消息推送系统。
2.消息推送技术
消息推送技术主要有两种方式[2]:一种是客户端使用PULL的方式,就是隔一段时间就去服务器上获取信息;另一种就是服务器使用PUSH的方式,当服务器端把最新的信息Push到客户端上。
2.1 GCM云推送
Google Cloud Messaging for Android(简称GCM),是谷歌新推出的云推送消息服务,即第二代的C2DM。该服务可以将服务器端的消息发送给客户端,简单,无需实现和部署服务端。但是受到Android版本的限制,而且需要连接Google的服务器,因此该服务在国内还不够稳定。另外,对于不同的硬件厂商平台,他们可能把Google所提供的这种服务去掉。
2.2 MQTT协议
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个轻量级的消息发布/订阅协议,是一种实现基于手机客户端的消息推送服务器的理想解决方案。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器的通信协议。该协议的优点是:协议简洁、小巧、可扩展性强、省流量、省电,目前已经应用到企业领域。但是目前还不够成熟、实现较复杂、服务端组件RSMB不开源,部署硬件成本较高。
2.3 XMPP协议
XMPP协议是一种基于标准通用标记语言的子集XML的协议,它继承了在XML环境中灵活的发展性。因此,基于XMPP的应用具有超强的可扩展性。该协议的前身是Jabber,目前已由IETF国际标准化组织完成了标准化工作。XMPP协议目前已经比较成熟,可扩展性强,协议是自由、源码开放的,这些都可以为开发人员直接使用,有利于减小项目的开发难度。
2.4 第三方平台
许多互联网公司看到了移动终端的消息推送的应用前景,推出了很多种成熟的第三方推送解决方案。对于一般用户来说,采用第三方解决方案,应用成本低,操作简单,第三方所提供的技术比较可靠。但是第三方解决方案,都需要连接第三方的服务器,因此数据的安全性方面可能会受到一定影响。另外,目前对于一些入门级别的服务目前是不收费的,但是从长远来看,收费是一种必然趋势。
3.系统设计与实现
本文采用XMPP协议作为消息推送系统的解决方案,XMPP协议也是目前最流行的一种消息推送协议。
XMPP中定义了三个角色,客户端,服务器,网关。通信能够在这三者的任意两个之间双向发生。服务器同时承担了客户端信息记录,连接管理和信息的路由功能。网关承担着与异构即时通信系统的互联互通。基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML。
基于XMPP协议的开源的客户端框架是smack,它主要封装了一些XMPP的实现,asmack是改进版的 smack。而另外一个开源框架的诞生,则是对在引用smack的基础上实现和服务器端的持久连接,以实现服务器对客户端的推送,那就是Android push notification,简称Androidpn。
3.1 服务器端
Androidpn 客户端需要用到一个基于java的开源XMPP协议包asmack,这个包同样也是基于openfire下的另外一个开源项目smack,不过我们不需要自己编译,可以直接把Androidpn客户端里面的asmack.jar拿来使用。客户端利用asmack中提供的XMPPConnection类与服 务器建立持久连接,并通过该连接进行用户注册和登录认证,同样也是通过这条连接,接收服务器发送的通知。
Androidpn服务器端也是java语言实现的,基于openfire开源工程,Web部分采用的是spring框架。Androidpn服务器包含两个部分,一个是侦听在5222端口上的XMPP服务,负责与客户端的 XMPPConnection类进行通信,作用是用户注册和身份认证,并发送推送通知消息。另一个是Web服务器,采用一个轻量级的HTTP服务器,负责接收用户的Web请求。
最上层包含四个组成部分,分别是SessionManager,Auth Manager,PresenceManager以及Notification Manager。SessionManager负责管理客户端与服务器之间的会话,Auth Manager负责客户端用户认证管理,Presence Manager负责管理客户端用户的登录状态,NotificationManager负责实现服务器向客户端推送消息功能。
3.2 客户端
Androidpn在客户端集成了asmack。这样就可以很容易的简立一个和服务器端的基于xmpp协议的socket连接。Androidpn的客户端中,进行管理连接的类是XmppManager,它主要用来管理连接的信息,比如XMPP的端口、IP、登录的用户名密码,以及对连接的维护。整个服务器端和客户端的通信是基于一个session(会话)过程。
4.系统实现
4.1 搭建平台[3]
首先去官网下载AndroidPN源码服务端和客户端,用Eclipse导入AndroidPN server即服务端。由于AndroidPn 默认采用的数据库是HSQLDB 数据库,并不具有普适性,这里采用服务器端本地的MySQL 数据库进行部署。修改服务器端配置文件jdbc.properties文件,修改jdbcurl项为:jdbc:mysql://localhost/apn?&useUnicode;=true&characterEncoding;=utf8,修改jdbcusername和jdbcpassword为MySql的连接账号和密码。若采用SQLServer 数据库系统,可修改为相应的数据库连接内容,并导入相应jar 包,新建一个对应的空数据库。然后,运行并导出war文件,上传到tomcat服务器。
解压androidpn-client-0.5.0.zip,导入eclipse工程,运行前更改一处IP地址,修改res/raw/androidpn.properties文件中的xmppHost为xmppHost=10.0.2.2。
4.2服务器端
Androidpn平台可以实现手動信息推送,但是不能实现自动消息推送,因此需要自己编写接口调用推送服务来实现信息的自动推送。在Androidpn Sever创建Apicontroller类,用于接收应用程序发送过来的数据,并将消息推送出去。应用程序可以通过接口调用来实现消息的自动推送。
4.3 客户端
获得NotificationManager对象,构建一个Notification对象,该对象描述了通知的标题和内容,然后再调用NotificationManager.notify方法发起通知,发起后的通知就会在消息栏提示。
5.结束语
移动终端的消息推送服务目前得到了广泛的应用,本文基于目前比较主流的消息推送协议XMPP协议,设计并实现了一个消息推送系统,利用Androidpn框架可以实现由服务器端向客户端的文本信息的推送。
参考文献
[1]王美妮,王颖,赵伟.基于XMPP协议消息推送机制的研究与实现[J].长春师范学院学报(自然科学版). 2014,33.
[2]黄河清,陈文. Android平台消息推送服务的实现[J].网络与通信.2014,18.
[3]常新峰,吕乐乐. Android平台下消息推送机制的研究与实现[J].计算机软件与应用. 2014,14.
随便看

 

科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2025/2/5 14:44:38