APP下载

Android消息推送机制在分析交互系统中的应用

2016-05-11黄子娟

现代计算机 2016年9期
关键词:移动互联网

黄 刚,黄子娟

(南京邮电大学计算机学院、软件学院,南京 210003)



Android消息推送机制在分析交互系统中的应用

黄刚,黄子娟

(南京邮电大学计算机学院、软件学院,南京210003)

摘要:探讨一种基于Apache Mina的网络应用框架的推送方案,方案设计一个应用在移动终端的Web服务性能的移动分析系统,该系统可及时推送消息到客户端程序。实验结果表明,该推送方案具有良好的开放性与安全性,有效地降低移动应用开发者的开发周期。

关键词:移动互联网;Android;Apache Mina;数据推送

0 引言

新世纪是一个互联网的时代,人们的生活方式发生很大的变化,移动互联网的快速发展使人们获取信息的方式更加方便,智能化的移动终端的使用也更加普及,为了提高办公效率,如何能够充分地利用以及有效地运用移动终端,成为企业关注的重要问题。消息推送技术是由服务器主动发送消息给客户端,当有新消息的时候,可以及时地通知手机用户正在发生的事情,由于推送技术具有高可靠性、高安全性、实时到达等众多优点,目前已经被各行各业所采纳应用。

1  Web服务性能的移动分析系统的主要功能

Web服务性能的移动分析系统旨在将具体应用的性能分析结果同时发送给所有感兴趣的用户,让用户及时了解相关应用的性能特点,它的主要功能是负责提供性能分析结果信息列表,当用户对某一Web应用进行性能分析后将分析结果推送给相关用户,或者某一Web应用的性能问题被解决之后及时通知相关联用户,从而达到消息的及时性以及准确性。

Web服务性能的移动分析系统所提供的主要功能和信息如下:(1)预警提醒:当有新的性能更新信息出现时,会增加一个红色圆点数字标识提醒用户注意查看。(2)历史记录:主要展示以前所更新过的Web应用性能信息,用于了解Web应用性能状态的变化。(3)性能分析:用户首先选择相应的Web应用,然后输入期望响应时间、选择分类器模型,根据不同需要输入不同类别条件,然后点击开始分析,便可以对相应的Web应用进行分析了。(4)综合查询:进行更加详细的条款关键字查询,用于快速定位具体信息。(5)个人信息:可以查看登录人的姓名、账号以及当前软件的版本号等。上面提到Web服务性能的移动分析系统的5个功能,其中第一个“预警提醒”中最体现消息的及时性,此模块需要用到本文中主要论述的Android消息推送技术。

2 消息推送机制简介

消息推送类似于互联网中常见的信息推送,但在移动设备越来越多也加入互联网的时代,对于移动客户端的App应用来说,所推送的信息的主要以消息的方式呈现给用户。

参考有关文献资料中信息推送的定义,以及各种包含消息推送的应用[1],结合分析推知,消息推送是采取某种共同约定的网络协议,主动将用户所需要的或者是感兴趣的消息发送到用户移动终端的一种获取最新通知等消息的方式。消息推送会分析用户的喜好来判断用户希望接收到的消息,然后将分析后的消息推送给用户,使用户获得尽可能有价值的消息。

消息推送有各种各样的实现方式,包括轮询方式、PushMail方式、持久连接以及SMS短消息方式等,这么多的实现方式或者是表现形式,归根结底大体可以分为以下两类[2],第一种是客户端主动拉取方式,当满足预设条件的时候,直接采用pull方式到服务器获取数据;第二种是服务端主动推送方式,Push技术则是根据用户的需要,当服务器有新消息的时候,判断新消息是否为用户所感兴趣的信息,如果是则把最新的消息有目的、按时地主动推送到客户端。

3 移动终端消息推送方案

3.1 Android系统简介

Android是谷歌公司发布的一种基于Linux内核的开放智能手机操作系统,Android系统架构采用了分层架构的思想[3],如图1所示。从上层到底层共包括四层,依次为(1)应用程序层:该层直接由运行在Dalvik虚拟机上的应用程序组成(如SMS短信客户端程序、Web浏览器、日历等)。(2)应用框架层:该层主要由一些供开发人员直接调用的API组成,如Activity Manager(活动管理器)、View System(视图系统)等,主要作用是简化了组件的重用,使应用间尽可能多地复用组件模块。(3)系统运行库层:是对应用框架层提供支持的层,而该层提供的NDK使得Java能够通过其来访问硬件,这一层主要包含C语言标准库、多媒体库、SQLite、Dalvik虚拟机等。(4)Linux内核层:该层主要包括驱动、内存管理、进程管理、网络协议栈等组件。四层架构相互依存同时也相互独立,这种明确的层次分工结构降低了层与层之间的耦合性,从而当某一层发生变动时,并不需要对其他的层进行改变。

3.2 Apache Mina

Mina是Apache软件基金会下的开源项目[4],是一个能够帮助用户开发高性能和高伸缩性的网络应用程序的框架。Mina包括以下特点:(1)高效的I/O操作:Mina框架的一个重要特点是其支持非阻塞的I/O,在非阻塞模式下,所有的工作都处于异步状态,在进行读写操作的时候若数据未就绪,则可返回处理其他消息,从而提高其处理效率。(2)基于事件驱动:Mina采用了事件驱动机制而非类似轮询的机制,这样当数据到达的时候,其会自动对数据进行相关的预处理,调用对应的解码器和处理逻辑,从而提高了系统的执行效率和可靠性。(3)具有良好的移植性和可扩展性。

Mina框架可以分为三个层次[5],分别为I/O服务层、过滤器链、业务逻辑接口层,如图2所示。Mina同时提供了网络通信的Server端、Client端的封装,使得网络通信与应用程序真正地隔离开来,使用者只需要处理其业务逻辑即可。

图1 Android体系架构

图2 Mina的整体结构

4 系统总体设计

对于所提出的系统主要由三个部分组成:系统应用服务器、移动终端消息推送服务器以及移动客户端。系统应用服务器一方面接收移动客户端提交的信息,另一方面将所需推送的消息数据发送给移动终端消息推送服务器;消息推送服务器对数据进行加工过滤,然后发送给指定的移动终端用户。对于应用服务器和移动客户端规定了相应的API接口以及对应的数据格式。

考虑到每次需要创建新连接时造成的系统开销,故采用长连接的方式,长连接就是长时间保存连接,不能断开,长连接要求系统必须实现以下功能:a.稳定的长连接:移动客户端在用户登录成功之后就必须和消息推送服务器维持一条稳定的连接通道,来保证当服务器有消息需要推送给用户的时候,能够及时发送出去。b.断线重连:即在连接断开的情况下能够及时处理,并能够有效地自我恢复。c.多客户端连接:系统消息推送服务器是为多个用户提供推送服务的,能够进行有针对性的一对一推送,因此该服务器须能够连接更多的客户端。

如果只有移动客户端,而没有应用服务端,那么所有的应用数据必须都保存在手机本地,然而又由于手机内存小以及运算速度的限制,将会成为此应用的瓶颈,故系统专门设立了应用服务器来处理具体的数据业务。服务器端的开发技术主流的有微软的.NET、甲骨文的JavaEE以及一些开源体系,在这里选择JavaEE作为应用服务器端的开发技术,一方面由于它同终端一样采用Java开发,使得编程更有效率;另一方面JavaEE包含很多优秀的框架可以使Web应用有更好的结构。

5 系统详细设计

由于Java NIO支持TCP和UDP协议,另外还支持RS232和VM内通讯,而Mina自身就是封装Java NIO的,又因为Mina有清晰的架构,所以能很简单地实现一个底层网络协议。Mina自身带有一些常用的过滤器[6],例如LoggingFilter(日志记录)、BlackListFilter(黑名单过滤)、CompressionFilter(压缩)、SSLFilter(SSL加密)等。在本文的项目中,主要的工作是在发送消息的部分,所以Mina框架的实现主要是围绕着IoHandler 和IoSession进行展开。

(1)客户端的设计:首先需要在应用程序用户登录成功的时候建立一个timer()定时器保持应用程序与服务器的长连接,当服务器有与该登录用户ID相匹配的消息出现时便会及时推送到用户端。消息接收客户端的设计主要分为三步:①建立一个NioSocket Connector对象;②设定过滤器;③设定消息处理器。

在实际应用中,可以使用下面的代码创建一个用户发送消息的客户端。

NioSocketConnector connector = new NioSocketConnector(); //初始化connector

LoggingFilter lf = new LoggingFilter();

lf.setSessionOpenedLogLevel(LogLevel.ERROR);

connector.getFilterChain().addLast("logger", lf);

connector.getFilterChain().addLast("codec",new Protocol CodecFilter(new ObjectSerializationCodecFactory())); //设置通信协议

connector.setConnectTimeoutMillis(30000); //连接服务器,超时时间为3秒

connector.setHandler(new ClientHanlder(context)); //设定客户端的消息处理器

ConnectorFutere cf = connector.connect(new InetSocket Address("221.226.27.14", 19148));

cf.awaitUninterruptibly(); //等待连接创建完成

session = cf.getSession(); //获取会话

这样便可以使用session的write方法进行消息发送,创建一个WriteFuture就可以将信息发送出去了。其中在接收到推送数据后ClientHanlder进行主要的业务逻辑处理,并通过以下方法推送消息至手机端通知栏,其中NotificationService.class中具体设置了通知栏的操作,用户根据通知便可以进入对应的应用及时查看所收到的消息。

private void sendMsgToService(String key, Context context, String content){

Intent intent = new Intent(context, NotificationService. class);

intent.putExtra(NotificationService.KEY, key);

intent.putExtra(NotificationService.KEYCONTENT, content);

context.startService(intent); //开启推送服务

}

(2)服务端的设计:当移动端提交的消息需要被推送给指定用户的时候,首先提交到Web端,经过Web端经分析后把该消息推送到推送服务器,最后由推送服务器推送给指定用户。与客户端类似消息发送服务端的设计也主要分为三步:①建立一个SocketAcceptor,除了启动server之外它还可以为我们可以生成过滤器DefaultIoFilterChainBuilder、设置消息处理器等功能;②设置过滤器;③设置消息处理器。

(3)推送测试:登录系统,使用考当前账户对某一Web应用进行性能分析,用另外一个手机使用与前面所选Web应用相关联的其他用户账户登录系统,便可以看到通知栏会出现如图3所示。

图3 消息推送界面

点击通知栏提示便可进入当前App应用中查看新信息详情,如图4所示。

图4 查看消息界面

6 结语

文中结合实际应用场景分析了推送平台的设计方案和解决方案,随着移动互联网的不断发展,各种移动终端的应用都有进行消息推送的需求,而本文中方案提供的基于Mina的推送方案具有可靠性高、安全性高、实时性高并且其实施简单,易于推广等优点,在实际的生活应用中具有极大的研究意义。

参考文献:

[1]律智坚,吴广财.消息推送在移动高级应用中的研究和实现[J].广东电力,2014,27(2):117-120.

[2]Mark Richards,Richard Monson-Haefel,David A. Chappell.Java Message Service[M].南京:东南大学出版社,2010.88-102.

[3]胡伟. Android体系架构及其驱动研究[N].广州广播电视大学学报,2010(4):96-102.

[4]林佳作.基于长连接的移动终端消息推送系统的设计与实现[D].西南电子科技大学,2014.

[5]韩东东.基于MINA框架的RTSP移动流媒体代理服务器设计与实现[D].西南交通大学,2011.

[6]范旭.基于Mina的Android消息推送系统研究与实现[D].厦门大学,2012.

黄刚(1961-),男,江苏人,研究生导师,教授,研究方向为计算机在通信中的应用,海量数据管理,移动商务平台设计开发

黄子娟(1991-),女,山西人,硕士研究生,研究方向为移动互联网、信息网络与通信软件

Application of Message Push Mechanism in the Analysis and Interactive System Based on Android Platform

HUANG Gang,HUANG Zi-juan
(College of Computer Science & Technology, Nanjing University of Posts and Telecommunications, Nanjing 210003)

Abstract:Discusses a push scheme based on network application framework of Apache Mina, designs an application of analyzing the Web Service`s performance in the mobile terminal. The system can timely push message to the client application. The experimental results show that this push scheme has the characteristics of openness and security. And it also reduces the development cycle of a mobile application effectively for developers.

Keywords:The Mobile Internet; Android; Apache Mina; Message Push

收稿日期:2015-12-30修稿日期:2016-03-02

作者简介:

文章编号:1007-1423(2016)09-0066-04

DOI:10.3969/j.issn.1007-1423.2016.09.017

基金项目:国家自然科学基金资助项目(No.61171053)

猜你喜欢

移动互联网
智能手机在大学生移动学习中的应用研究
基于Android的一键智能报警系统设计与实现 
大数据环境下基于移动客户端的传统媒体转型思路
基于移动互联网的心理健康教育初探