基于OMA的移动广告投放平台设计与实现
2019-07-15钟文杰
丁 磊,钟文杰
(广东工业大学 计算机学院,广东 广州 510006)
随着互联网的发展和移动终端的普及[1],移动广告的出现是必不可少的,移动广告具有移动性、高效性和互动性的特点. 移动广告有诸多优点,但随着移动广告类型的丰富,连接到广告平台的移动终端数量渐渐增多,广告平台对移动终端的移动广告的管理就逐渐成为一个难题. 为了达到广告平台能有效管理数量庞大的移动终端的移动广告的目的,本文设计一种利用OMA DM协议开发的移动广告投放平台. 该平台的创新点在于:设计一种移动广告投放平台使用OMA DM协议,提高管理大量的移动终端中移动广告的能力. OMA旨在寻求一种与系统无关的、开放的,使各种应用和业务能够在各种终端上实现互联互通的标准[2]. 在移动广告领域,杨芮等[3]的广告系统利用Struts2框架作为控制层,但其广告系统的广告展示方式较为单一. 菅朋朋等[4]的RTB广告系统使用实时传输协议缩短广告系统对数据的响应时间,但其广告系统的稳定性和可靠性不足. 廖安舟等[5]提出分层次、模块化的广告系统,但其广告系统的安全性及用户的隐私性保护不足. 王博等[6]提出基于云平台的广告投放系统,但其广告投放系统对平台依赖性较大,移植性较差. 陈志圣等[7]提出基于位置的移动商务广告模型,但其模型中蓝牙的侦测范围较小,且当用户运动速度较快时,该模型无法与用户建立稳定的连接.
对于上述存在的广告系统的不足及结合OMA DM协议,本文提出基于OMA的移动广告投放平台,利用OMA DM协议中的管理对象和管理命令对移动终端进行有效管理,在此基础上实现OMA移动广告投放平台对数量庞大的移动终端中的移动广告管理功能.
1 基于OMA的移动广告投放平台设计
1.1 OMA的DM协议
OMA DM协议是OMA组织开发的一种通过远程服务器对网络内移动终端进行管理的协议. 它定义一套服务器和移动终端之间信息交互的标准[8],DM协议由DM服务器和客户端APP组成,DM服务器是控制方,客户端APP是被控制方. 若要实现对移动终端的统一管理,移动终端就要有统一的数据格式.为此,DM协议定义了一些管理对象MO(Management Object)[9],管理对象内置在移动终端的客户端APP,以树的形式组织起来,称为DM管理树[10]. 管理对象在DM管理树的位置用统一资源标识符URI(Unified Resource Identifier)表示,使用管理命令和管理对象达到管理移动终端的目的. 命令一般有Add、Get、Replace、Exec等,管理命令采用XML编码,符合SyncML同步规范语言[11],客户端APP通过解析DM服务器发送的管理命令执行相应操作. OMA DM管理模型如图1所示.
图1 DM管理模型Fig.1 DM management model
首先,用户通过浏览器登陆并发起管理操作,DM服务器下达管理命令,然后移动终端中的客户端APP解析DM服务器的命令. 根据管理命令对管理对象操作,最后返回数据和状态码.
1.2 OMA广告管理系统的设计
OMA移动广告投放平台由OMA广告管理系统和客户端APP组成,如图2所示. OMA广告管理系统的需求分析包括:(1) 互动性的需求,OMA广告管理系统投放移动广告到用户的移动终端,用户可以点击广告链接. (2) 广告投放效果度量需求,OMA广告管理系统记录用户对广告的响应,为广告活动提供数据,如广告点击率[12]. (3) 通信安全需求,对通信的数据进行加密,使用SSL进行加密处理,使用Basic和MD5[13]两种鉴权机制进行鉴权,验证DM消息完整性时使用HMAC-MD5进行验证. (4) 广告管理需求,OMA广告管理系统可以对数量庞大的移动终端的移动广告进行管理. OMA广告管理系统与移动终端之间的DM消息使用WBXML编码后用HTTP协议进行承载,传输时将HTTP头中的Content-Type和MIME类型写为application/vnd.syncml.dm.wbxml.
OMA广告管理系统模块如图3所示,具体内容包括:
(1) 用户注册模块和用户登陆模块:用户注册时调用注册模板,填写注册角色类型、用户基本信息、用户名和密码,密码使用MD5算法加密. 用户登陆时,登陆的用户角色、用户名、密码与数据库中的用户数据一致方可登陆成功.
(2) 广告添加模块:用于广告主将广告资源上传到服务器并存储到数据库,选择广告类型后,加载相应的广告模板,填写广告名称、在某个时间段展示次数、展示的时间、选择广告素材,广告信息确认无误后选择提交广告. 该模块使用MutipartFiles类getInputStream()方法处理广告素材得到输入流,然后再使用Files类copy()方法将广告素材以输入流的形式上传到服务器.
图2 OMA移动广告投放平台架构图Fig.2 OMA mobile advertising platform architecture diagram
图3 OMA广告管理系统模块图Fig.3 OMA advertising management system
(3) 广告计价模块:使用CPM(Cost Per Milles)计价模型,即每千次展示费用,这种计价方式适用于展示广告,其计算公式是:Revenue=N×cpm/1 000,N代表广告展示的次数,cpm代表每千次展示广告费用.
(4) 广告审核模块:用于审核广告主上传的广告的合法性,审核有两个步骤,一是自动审查,通过系统自动审查是否有非法字符,每100 s执行一次,使用Java.util.TimerTask创建定时任务机制timerTask,使用Java.util.Timer创建定时任务timer,然后调用timer的schedule()方法实现定调度. 二是人工审查,人工审查是否有错别字或非法的素材资源,如审核通过,广告主则可以投放该广告,否则,将审核不通过原因反馈给广告主.
(5) 实时控制模块:控制广告投放状态,有投放广告需求时,OMA广告管理系统的应用层向广告服务管理模块发出请求,广告服务管理模块将请求发给DM服务器通信管理模块,使用DM协议的Put命令对管理对象进行管理,将广告投放到移动终端的客户端APP,如需控制广告停止,则使用Delete命令.
(6) 财务信息模块:用于查询广告主账户余额和现金审核. 广告主发出充值或提现请求后,财务管理人员根据资金是否到账,广告主账户余额来决定是否同意广告主的申请.
(7) 广告反馈及记录模块:收集广告的反馈信息,如广告名称、广告Id、广告计费、终端用户观看或点击广告次数等信息,然后使用Cewolf开源报表工具进行信息统计.
(8) 系统管理员模块:负责创建和管理用户,对用户分配角色、分配角色权限、管理角色权限.
(9) 广告主管理模块:用于广告主查询和修改广告主个人信息,查询移动广告投放效果信息,并控制移动广告的投放,由此功能模块可以发起账户充值或提现请求.
(10) 广告服务管理模块:它是OMA广告管理系统的核心模块,用于接收应用层广告模块的请求,并把请求发送给DM服务器通信管理模块,同时将DM服务器通信管理模块的响应发送给具体的广告请求模块.
(11) DM服务器通信管理模块:会话池管理交互双方会话的创建、存储和回收,协议处理机编解码XML报文,将XML报文转化为WBXML格式进行传输,按照OMA DM协议标准对移动终端进行交互管理.
(12) 接口1:OMA广告管理系统与移动终端交互的接口,使用OMA DM协议进行通信.
最后就是DM协议管理广告流程:
DM服务器通信管理模块收到广告服务管理模块的广告投放请求时,使用OMA DM协议的管理命令Put,Put命令表示推送广告,将移动广告推送到移动终端的管理树的对象节点下,移动终端收到移动广告后,返回200状态码,表示推送成功,否则推送失败. 更新广告时,使用Replace命令,在DM消息中设置管理对象的URI,使用Replace命令对管理对象进行更新广告信息. 若要获取某个广告的反馈信息时,使用Get命令,指定管理对象的URI,从DM管理树下的管理对象节点返回该移动广告的反馈信息. 当广告主想要删除某个移动广告时,使用Delete命令对移动终端管理树中包含该移动广告的管理对象节点进行操作,删除该广告,返回状态码,DM协议管理广告流程图如图4所示.
图4 DM协议管理广告流程图Fig.4 DM protocol management advertising flow chart
1.3 客户端APP的设计
客户端APP主要是向OMA广告管理系统发送设备注册请求,将信息注册到DM服务器,解析从DM服务器发来的管理命令,执行管理命令,展示OMA广告管理系统投放的移动广告. 客户端APP组成模块如图5所示,客户端APP主要由手机鉴权模块、统计记录模块、客户端注册模块、解析命令模块、连接建立模块、广告展示模块组成,下面介绍一些模块的设计方案.
图5 客户端APP组成模块Fig.5 Component module of the client APP
1.3.1 客户端注册模块的设计
建立会话连接前,先要进行信息引导注册,移动终端从一个空的、没有配置DM服务器信息到能够向DM服务器发起会话的过程,就是引导注册过程[14],基于OMA的移动广告投放平台引导注册方式有:(1)客户端发起的引导注册,设备制造商提前将DM服务器的信息内置在移动终端中. 但这种方式导致引导注册信息是不可扩展的. (2) DM服务器发起的引导注册,通过终端用户插入SIM(Subcriber Identity Module)卡个性化移动终端设置,同时移动终端号码通知到DM服务器,DM服务器知道移动终端地址,便向移动终端发送引导注册信息. (3) 智能卡发起的引导注册,智能卡中包含有DM服务器的信息,插入智能卡可使移动终端得到DM服务器信息并建立会话.本文采用客户端发起的引导注册,客户端发起注册时序图如图6所示.
图6 客户端发起注册时序图Fig.6 Client registers the DM server with a timing diagram
1.3.2 DM消息处理流程
客户端APP接收OMA广告管理系统发送的DM消息后,首先检查承载的HTTP报文中是否有xsyncml-hmac字段,若存在该字段则根据mac摘要值检验DM消息的完整性. 完整性验证成功后,使用解析命令模块将DM消息的WBXML格式转换为XML格式,XML格式的消息包含SyncML节点、SyncHdr节点、SyncBody节点,SyncML是消息的根节点,SyncHdr节点包含消息的基本信息,如管理对象的URI,SyncBody节点包含消息的主体内容. 然后使用SyncML Manager对SyncBody节点的子节点进行遍历,SyncBody的子节点都是命令,根据这个命令名称找到命令对象,然后初始化这个命令对象,根据SyncHdr节点中包含的URI对管理对象执行命令,得到结果和状态.
1.4 数据库设计
数据存储使用Mysql数据库,存储广告主基本信息、广告及广告效果、广告计费、账户余额及金额充值记录、广告交易记录和用户信息. 设计的数据库由loginUser_table、ad_table、finan_table、trade_table等表组成. 由于篇幅限制,下面主要给出广告表ad_table的设计,如表1所示,用户信息表loginUser_table表的设计,如表2所示.
表1 ad_table表设计Tab.1 Design of the ad_table
ad_table表主要用于存储上传的广告信息,记录广告投放效果.
表2 loginUser_table表设计Tab.2 Design of the loginUser_table
loginUser_table表用于记录登陆用户信息,验证用户身份.
2 实验与讨论
为验证基于OMA的移动广告投放平台的有效性,使用一台阿里云主机作为服务器,使用手机用于接收广告,使用webbench模拟数量庞大的移动终端,测试移动终端并发访问OMA广告管理系统时的性能.
系统工作流程如下:(1) 客户端APP向DM服务器发送连接请求,广告主登陆OMA广告管理系统,在广告添加模板中向服务器上传广告,然后由广告管理员进行审核通过.
(2) OMA广告管理系统进行广告投放,客户端APP进行广告接收并展示,如图7所示.
图7 注册信息与广告展示Fig.7 Registration information and advertising display
(3) 使用webbench模拟数量庞大的移动终端,并发访问OMA广告管理系统,在实验条件相同情况下,将其与文献[15]的移动广告平台对比,文献[15]的移动广告平台性能分析如表3所示,OMA广告管理系统性能分析如表4所示.
表3 文献[15]的移动广告平台性能分析表Tab.3 Performance analysis table of mobile advertising platform in [15]
实验结果表明,数量庞大的移动终端并发访问文献[15]的移动广告平台时,CPU的占用率和内存使用率增大较快,该平台系统性能下降较快. OMA广告管理系统被数量庞大的移动终端并发访问时,该系统的的总体性能还比较好,能够有效管理数量庞大的移动终端的移动广告,提高系统的稳定性和可靠性.
表4 OMA广告管理系统性能分析表Tab.4 OMA advertising management system performance analysis table
3 总结
基于OMA的移动广告投放平台使用DM协议对数量庞大的移动终端的移动广告进行管理,管理的内容主要包括广告投放、广告删除、广告更新、获取广告反馈信息等. DM协议定义了一些标准的管理对象[16],如SyncML DM、DevInfo、DevDetail管理对象.
管理对象内置在客户端APP中为DM服务器统一管理移动广告提供统一的数据格式,为统一管理移动广告提供保证. 移动终端访问服务器时能接收到
OMA广告管理系统投放的广告,并且系统的整体性能比较好,实现了对数量庞大的移动终端移动广告的管理和投放功能. 而OMA广告管理系统还未能对用户实现个性化移动广告投放,如何实现对用户个性化移动广告投放是未来研究的重点.