APP下载

基于 Web 和 Android 的 APP 信息统一推送系统的设计与实现

2019-11-03李柏林刘占伟

电脑知识与技术 2019年24期

李柏林 刘占伟

摘要:针对APP常驻后台以保证消息的推送,所造成的Android设备耗电发热、卡顿、降低续航,进而影响了用户的体验。设计了一个实用、实时且高效的信息推送服务系统,代理第三方应用需要推送的信息,由系统服务器统一通过WebSocket长连接推送至设备上的推送服务进程,再分发信息给目标应用,实现了信息推送等功能。有助于改善Android系统当前的生态环境乱象。

关键词:Android;推送;SSM框架;WebSocket

中图分类号:TP393        文献标识码:A

文章编号:1009-3044(2019)24-0293-04

开放科学(资源服务)标识码(OSID):

由于Android系统的消息推送服务FCM(GCM)在国内不方便使用,APP和厂商各自为政,APP使用后台保活、互相唤醒、全家桶等方式来保证后台消息推送,厂商则采取杀后台、限制唤醒等手段反制。这造成手机耗电发热、卡顿等现象,影响正常功能,降低了用户体验。泰尔实验室联合谷歌、国内各手机厂商、APP提供方和第三方推送方成立了安卓统一推送联盟,旨在解决这一乱象。

借鉴这一思想,基于Web和Android开发一套可行的APP信息统一推送服务系统,提供解决方案。APP使用本系统后,不在后台驻留服务和唤醒系统,节约备的电量和网络数据等资源,提高Android的系统体验。为开发者提供一个服务友好且高效的推送服务,有助于改善Android系统当前的生态环境乱象。

1系统设计

主要功能,是提供安卓应用厂商和用户设备中应用之间的信息统一推送渠道,基于此确定系统设计的目标:实用性,高效性,实时性。

实用性:将应用后台时的推送收归于本系统,解决当前Android系统中实际存在的各种问题,方便开发者和手机用户。

高效性:由与目标连接的设备数量巨大、部分应用推送频繁,系统需要较高的效率来处理业务。

实时性:去年发生的事件是旧闻而不是新闻,推送的信息需保持实时性。

1.1需求分析

1.1.1基础功能分析

基于J2EE和Android的开发框架,开发者可以通过网页端申请和管理应用、推送信息,也可以直接通过编程接口(API)推送和获取信息。系统管理员可以通过网页配置系统功能,并对开发者申请的服务进行管理。

系统主要分为开发者模块、推送模块、系统管理模块以及一个Android端接收处理推送信息。系统提供给开发者推送服务接口以获取设备地理位置和推送信息,同时提供一个封装了部分功能接口的Android开发SDK包方便接入。下图1是系统的模块框架图。

1.1.2系统用例分析

图2是系统管理员用例图,图3是开发者用例图。

1.2模块设计

主要的功能模块有:开发者模块、推送模块、Android端、系统管理模块等。

1.2.1开发者模块

包含开发者的注册登陆、应用服务的申请、管理,以及账户的密码变更、解封申请。

注册时必须提供邮箱,作为以后各种业务提醒的渠道。登陆页面除了常规的用户名密码外,提供一个验证码,防止机器程序恶意攻击,登陆验证码是一张图片,由服务器动态生成。

应用服务的申请时需选择应用需要的类型,根据最小权限原则,避免申请用不到的权限。服务类型分为三个级别:

普通:只能批量、全部推送;

位置:提供基础的位置服务,可以批量获取设备地理位置并处理后推送,也可直接按行政区域推送信息;

高级:对于聊天等推送频繁应用,提供WebSocket通道保持应用服务器与本系统的连接,提高效率。高级类型同时拥有前两级权限。考虑到聊天应用的隐私性、实时性、准确性,此类型的应用走WebSocket通道时不会进行敏感词过滤,也不执行权限过滤(本身已是最高权限),更不会记录日志,SDK不会处理信息,需要应用自行处理。

开发者可以对已申请的应用进行管理,包括删除应用、升级服务级别、查看应用的推送记录,且能够导出推送记录。

1.2.2推送模块

主要功能是权限和敏感词过滤、信息推送、设备返回信息处理并记录日志。

推送服务需要在项目应用启动时初始化一些必须的数据,初始化完成后等待并处理业务。业务的处理时并行的。

推送的信息需通过敏感词过滤,若检测出敏感词,则返回错误信息,并邮件通知开发者获得一次警告,多次警告后账户会被封禁。

敏感词过滤使用GitHub开源的工具类sensitive-words-filter,该工具采用DFA(确定有穷自动机)算法,性能较为优秀。同样,高级服务(如聊天应用等)使用WebSocket通道推送信息时不经敏感词过滤,同时也保障了用户的信息隐私。

推送信息经权限和敏感词过滤后,再经预处理,最终得到发送的目标设备ID,由此ID获取会话Session,将信息发送到设备。

推送的方式包括全部推送(推送到所有安装此应用的设备)、区域推送(特定地理位置的推送,如天气应用推送城市天气预报)、批量推送(推送到一批(一个)指定设备)。前两种推送应包含推送过期时间,系统在过期后清理队列。系统会维护设备和应用、地理位置之间的关系索引。

1.2.3系统管理模块

系统提供系统管理页面便于维护人员审核与管理开发者和应用,并维护敏感词。

管理员有权限封禁、解封开发者,封禁开发者时需给出理由,封禁后会发送邮件给开发者。开发者若申請解封,需发送邮件到指定邮箱,管理员审查后予以操作。

开发者申请新的应用服务和申请的服务升级均需要通过管理员审核。管理员根据申请描述予以操作,系统将邮件通知开发者。

系统管理包括开发者管理、应用管理和敏感词管理。

1.3 Android端

通过AndroidSDK接受并显示推送信息的端点。服务启动后通过WebSocket连接服务器,发送相应的初始化信息。设备和服务器的连接需要保持心跳。收到推送信息时发送到对应应用中处理并记录结果。

由于网络服务提供商会断开长时间未使用的连接路径回收资源,所以长连接的保持都需要实现心跳。TCP/WebSocket自带的心跳功能性单一,为了实现业务的一些特性,心跳由应用层实现,还可以附带设备当前的定位信息,一举两得。

设备的定位调用Android系统或百度地图提供的API实现。

为方便开发者接入本系统,提供一个应用SDK。通过此SDK,应用可以方便的获取设备ID信息、注册/注销服务、接收并处理推送信息、返回通知点击信息等。

1.4 数据库设计

数据库是本系统设计中的重要部分。数据库在设计时需考虑效率和优化问题,必要时添加适量的冗余字段,有利于提高数据库查询操作的性能。同时也要考虑设计合理的表间关联,减少表之间的耦合,符合数据库设计的规范。

本系统的数据库设计围绕着开发者及其申请的应用服务展开,设计难度最大的地方在于推送信息的表的设计,一条推送信息可能会推送至许多设备,为了降低冗余,需要将推送信息的内容和推送至设备的记录分开。同时等待推送的记录访问频率高,需设计为独立的一张表。

2系统实现

2.1开发者功能

开发者作为系统的目标用户,需注册并登陆成功后才能正常使用系统提供的服务。注册时提供邮箱地址,点击获取验证码时,验证码信息会发送到此邮箱,用以验证此邮箱地址的真实性和有效性。注册成功后,开发者可以进行登陆操作,登陆的验证码是系统随机生成的含有数字的图片,点击图片切换验证码。下图6是开发者注册、登录界面。

2.2应用申请与管理

使用本推送系统的第一步是先申请应用服务,通过系统审核后下载SDK并开始应用开发。已申请的应用服务可以查看详情和推送记录并进行调整、注销等操作。下图7是开发者申请应用服务界面。

2.3推送信息

推送信息不需要开发者登陆,只需要提供对应的key就可以实现推送,下图8是普通方式的网页推送界面,包含敏感词会禁止推送。推送成功,移动设备会弹出推送信息。

推送信息的方式是可选的,若选择批量推或者位置推送,会自动多出一个文本框供输入具体信息。下图9是位置推送并附带图片的推送结果。

同时该系统为了方便开发者进行业务分析,还推出了推送系统的记录与导出功能。

2.4系统管理功能

系统后台的应用管理和开发者的应用管理基本一致,仅查询条件增加按开发者过滤且操作中添加审核按钮。

开发者管理如图10的界面。

实现社会主义核心价值观,要求网络信息中杜绝一些敏感词汇。敏感词随着各方面的因素而变动着,对其的维护也是一个重要的方面。

3结语

基于SSM框架和WebSocket技术,进行开发的Android平台信息推送系统。统一的信息推送系统和各应用独立的信息推送方式相比,减少了应用的后台活动和网络连接,降低了对系统资源的占用,使设备续航得以优化,延长了设备寿命,提升了设备和Android系统的使用体验。对设备厂商、开发者和设备用户三方都是有利的。

参考文献:

[1] 李兴华. 基于WebSocket的移动即时通信系统[D]. 重庆大学, 2013.

[2] 王盼盼. 基于BPEL工作流的服务组合技术研究[D]. 沈阳理工大学,2011.

[3] 张爱华, 吕京涛. CSS快速入门[D]. 山东:青岛出版社,2000.

[4] 房体盈. 基于JavaScript技术的WebGIS设计与实现[D]. 大连理工大学,2008.

[5] 张志强. 基于Web环境的高校科研管理系统的设计与实现[D]. 电子科技大学,2006.

[6] 李洋. SSM框架在Web应用开发中的设计与实现[J]. 计算机技术与发展,2016,26(12):190-194.

[7] 蔚晓娟. 基于SSVH框架的综合集中告警WEB系统的研究与实现[D]. 西南交通大学,2007.

[8] 严科磊. 基于J2EE的小学信息技术课CAI系统的设计与实现[D]. 浙江工业大学,2012.

[9] 葛丹. 物联网传感器数据处理平台的设计与实现[D]. 南京邮电大学,2016.

[10] 易仁伟. 基于WebSocket的实时Web应用的研究[D]. 武汉理工大学,2013.

[11] 俞超飛. 腾讯公司手机设备管理系统设计与实现[D]. 大连理工大学,2016

【通联编辑:唐一东】