陆卫忠,赵玉雪,朱云祥,忻立
(1.苏州科技学院电子与信息工程学院,江苏苏州215009;2.苏州科技学院计算机应用技术研究所,江苏苏州215009)
基于微信公众平台架构的应用系统开发
陆卫忠1,2,赵玉雪1,朱云祥1,忻立1
(1.苏州科技学院电子与信息工程学院,江苏苏州215009;2.苏州科技学院计算机应用技术研究所,江苏苏州215009)
介绍了移动互联网及应用系统开发技术的发展趋势,剖析了微信公众平台的架构,从应用模块和接口访问两方面详细说明了基于微信公众平台的移动互联网应用设计的方法,并用“e活动”作为实例进行了系统的说明。
微信;微信平台;架构;APP
随着人们生活水平的提高和科学技术的进步,移动互联网正以雨后春笋之势迅速发展。2013年中国移动互联网在延续了近几年的增长态势的基础上,进一步在人们生活的方方面面深深地打上“移动互联网”的烙印。随着智能手机成为第一终端、互联网中心和个人信息中心,人们把自己的沟通、社交、娱乐、生活、商务、隐私交给了手机及其各种应用[1]。因此,移动应用的发展趋于多样化和个性化。
移动互联网应用的原有开发模式已经落后于应用需求,是对开发人员的一大挑战。腾讯公司微信公众平台的推出,为开发者提供了新的开发模式,弥补了传统APP开发的不足,个人、企业可根据自身需求,定制各自的“门户应用”来提高访问量,增加知名度。所以,掌握基于微信公众平台的应用开发方法势在必行。
1.1 微信公众平台功能
微信公众平台主要有群发功能和高级功能[2]。群发功能,即群发一条消息,该消息会推送给关注公众账号的所有用户。群发消息可以根据需求选择单文字消息、图片消息、语音消息、视频消息和图文消息。高级功能是公众平台提供给开发者用于二次开发的接口,分为编辑模式和开发模式,开发者只能选择其中一种开发模式。
微信公众账号分为服务号和订阅号(见表1),两者都具有群发功能和高级功能,只是在功能权限方面有差异。
服务号一个月内仅可以发送一条群发消息,可直接使用自定义菜单。服务号发给用户的消息,会显示在用户的聊天列表中。并且,在发送消息给用户时,用户将收到即时的消息提醒。
订阅号为用户提供信息和资讯。订阅号每天可以发送一条群发消息,开发之后才能使用自定义菜单。订阅号发给用户的消息,将会显示在用户的订阅号文件夹中。在发送消息给用户时,用户不会收到即时消息提醒[2]。微信公众平台功能如图1所示。
表1 服务号和订阅号对比表
图1 微信公众平台功能图
1.2 微信公众平台架构
公众平台消息接口为开发者提供了与用户进行消息交互的能力[3]。对于成功接入公众平台开发接口的公众账号,用户发消息给公众号,微信公众平台服务器会使用HTTP请求对接入的网址进行消息推送,第三方服务器(开发者使用的服务器)可通过响应包回复特定结构的消息,从而达到回复消息的目的。
使用了高级功能的微信公众账号就成为一个配备了一些指令规则的账号[3]。在用户关注公众账号后,发送特定的指令给公众账号即可获得相应的结果。而这些规则的逻辑需要开发者根据公众平台的开发规则在后台实现。用户、微信服务器和第三方服务器三者之间的交互关系如图2所示。
图2 公众平台交互关系图
(1)用户在微信客户端向微信平台发送消息,该消息会通过网络到达微信服务器;(2)微信服务器收到该消息后,把消息转发给第三方服务器;(3)该服务器收到请求后,首先解析消息格式,提取消息的内容,并经预定义的业务逻辑处理,将处理结果封装后返回给微信接口;(4)微信平台把收到的消息转发给用户的微信客户端。
微信公众平台的高级功能中提供的两种二次开发的模式:编辑模式和开发模式[4]。开发者根据需求可以选择其中一种模式进行二次开发。
2.1 二次开发模式
2.1.1 编辑模式编辑模式下具有的功能是:①消息推送;②预设自动回复,为用户提供需求信息;③将系统平台从PC端向WAP延伸[5]。
编辑模式采用跳转到页面方式[5],因此,可在系统平台中进行二次开发,在系统服务器中制作功能页面,供“编辑模式”下链接调用,这样,使开发平台应用得到了拓展。
2.1.2 开发模式开发模式下具有的功能是:①提供资讯;②预设自动回复;③提取系统平台数据,实现个性化的服务[4]。
开发模式下,微信平台可转发HTTP请求的XML数据包到配置的URL上,开发人员设计的程序解析该XML数据包后对数据库操作,从而将拓展功能引入到平台中来:①引用网络资源,如:天气查询、火车票查询、幽默笑话;②自行设计数据库,设计出个性化服务,具有很强的开发拓展功能。编辑模式和开发模式的优劣比较,见表2。
表2 编辑模式和开发模式优劣对比表
2.2 应用模块及接口访问
公众平台提供的应用模块主要有:接受用户消息、向用户回复消息、事件推送、会话界面自定义菜单等。而开发的前提是:网址接入,即接口配置信息。下面根据开发的流程来详细介绍应用模块及其接口访问方式。
(1)申请微信公众账号。输入网址:https://mp.weixin. qq.com/进行注册,需要提供一个电子邮箱,个人用户还需提供身份信息。
(2)部署第三方服务器。选择云服务器或者在Internet上可访问的普通服务器。
(3)注册接口,即填写接口配置信息:登录自己的公众账号的前台,依次单击导航上的“高级功能”→右边的“开发模式”→“成为开发者”,可以看到如图3的界面。
图3 接口配置界面
开发者需要提供一个URL和一个Token,URL是上一步部署的服务器的接口,是第三方服务器和微信服务器交互的桥梁。例如:当用户发消息给微信平台时,微信服务器会将该消息转发给URL所指向的第三方服务器。Token是微信服务器和被开发的公众账号服务器之间的密钥[6];
(4)编写代码,完成应用模块的业务逻辑。
应用模块一:接收用户消息。当微信用户向公众账号发消息时,微信服务器会将用户消息用XML封装后以HTTP请求发送到配置的URL上。可以接收的消息分为:文本消息、图片消息、地理消息和链接消息。例如,文本消息的XML格式是:
根据不同类型的消息字段来获得所需的信息。表3就是主要的消息字段及其描述。
表3 接收用户消息字段描述
应用模块二:向用户回复消息。当微信用户发来一条消息时,要回复相应的消息。根据收到的MsgType来确定消息的类型,然后构造XML数据包以HTTP响应回复给用户。可以回复的消息分为:文本消息、音乐消息、链接消息和图文消息。例如,回复链接消息的XML数据包格式是:
回复用户消息字段描述见表4。
表4 回复用户消息字段描述
应用模块三:事件推送。当用户在客户端触发了事件的时候,公众账号服务器也会收到一条消息。这些事件包括用户订阅公众账号、取消关注公众账号和单击自定义菜单[7]。此时,公众账号服务器会收到事件推送的XML格式消息,开发者可根据需求读取相关字段并进行处理即可。公众账号服务器收到的事件推送的消息格式如下:
事件推送消息字段描述如表5所示。
表5 事件推送消息字段描述
应用模块四:会话界面自定义菜单。自定义菜单的创建、获取和删除需要获取凭证,这些操作的执行需要主动发起HTTP请求,借助相应的API来实现,如创建自定义菜单的接口地址是:
HTTP请求方法是POST方法,请求的参数是一个JSON格式的字符串。PHP提供了两个内建的函数来处理JSON格式的字符串:json_encode把PHP数组转换成JSON格式的字符串;json_decode把JSON格式的字符串转换成PHP的多维数组[8],为前后台交互提供了可能。
创建菜单请求的POST数据的各个参数的详细描述见表6。
在完成各个模块的业务逻辑之后,更新部署的代码即可。在实际开发中,可以使用版本控制工具(SVN、CVS等)实时修改、实时更新。
表6 创建菜单请求中各个参数的描述
“e活动”(活动发酵剂)是一个开发实例,用来解决以下问题:商业营销活动通常以散发传单等方式宣传,达不到理想的效果;校园文化和商业活动现场冷清,公众的参与度不高;公益慈善活动中缺乏实时的社会监督;活动结果无法系统总结和保存,以用于提高活动质量。
系统开发的步骤如下:
(1)申请“e活动”微信公众账号。
(2)部署服务器。该系统选择新浪云服务器。
(3)注册后登录公众账号的前台,开启“开发模式”,填写接口配置信息。
(4)完成业务逻辑。在“e活动”中,用户在微信上进行的所有操作产生的数据均由微信客户端发送给微信服务器后转发给新浪云平台,系统在云平台上对用户请求做相应的处理,并返回处理后的数据给微信服务器,最后微信服务器把系统的相应数据发送至用户的微信客户端。同时,系统直接将Discuz论坛架设在云平台上,因此,可以与论坛(Discuz)集成,将活动信息同步至论坛之上进行保存,实现活动信息公开化、持久化。系统原理如图4所示。
(5)更新代码,完善功能。“e活动”开发过程中,使用SVN进行版本控制,实行更新代码。本系统的功能包括PC端B/S管理模块、微信平台服务模块和Discuz论坛模块,具体功能是这三个功能模块的扩展,系统功能图如图5所示。
图4 “e活动”系统原理图
图5 “e活动”系统功能图
“e活动”的部分截图如图6、7所示。
图6 “e活动”系统注册界面
图7 “e活动”的部分截图
目前,微信公众平台在企业移动门户、新闻资讯、娱乐、社交应用、游戏等领域的使用越来越广泛,微信公众平台的应用越来越受人们的青睐。文中介绍了微信公众平台以及基于微信公众平台的应用系统框架及实现方法,并以“e活动”为实例详细介绍了系统开发的流程,该应用系统已在各类校园活动中得到很好的应用。
[1]郑青莹.2014亿玛智慧峰会聚焦移动互联网大数据应用[EB/OL].[2014-10-31].http://gb.cri.cn/44571/2014/10/31/7872s4748983.htm.
[2]百度百科.微信[EB/OL].[2013-06-20].http://baike.baidu.com/view/5117297.htm.
[3]钟志勇.微信公众平台应用开发实战[M].北京:机械工业出版社,2013.
[4]腾讯公司.微信公众平台官方[EB/OL].[2012-08-23].https://mp.weixin.qq.corn/.
[5]潘峰楠.基于微信公众平台移动校园构建刍议[J].信息系统工程,2013,12(20):49-50.
[6]易伟.微信公众平台搭建与开发揭秘[M].北京:机械工业出版社,2013.
[7]ZhiWei.微信公众平台开发教程消息接收响应[EB/OL].[2013-12-03].http://jingyan.baidu.com/article/d5c4b52b32bb0dda560dc5a0.html.
[8]深海的小鱼儿.PHP数组和Json之间的转换[EB/OL].[2011-05-26].http://www.cnblogs.com/xmphoenix/archive/2011/05/26/2057963.html.
Development of the application system based on WeChat public platform
LU Weizhong1,2,ZHAO Yuxue1,ZHU Yunxiang1,XIN Li1
(1.School of Electronic&Information Engineering,SUST,Suzhou 215009,China;2.Institute of Computer Application Technology,SUST,Suzhou 215009,China)
This paper analyzed the tendency of mobile internet and application system development,and the architecture of WeChat public platform.We demonstrated in detail the methods of mobile application design based on WeChat public platform from the aspects of application modules and interface accesses.An app named“eactivity”was proposed to account for the course of mobile application development.
WeChat;WeChat platform;architecture;APP
TP393
A
1672-0687(2015)03-0047-05
责任编辑:艾淑艳
2014-06-07
江苏省教育厅自然科学研究项目(08KJD510007);江苏省大学生实践创新训练计划项目(201310332056X)
陆卫忠(1964-),男,江苏常熟人,副教授,硕士,研究方向:计算机控制网络与嵌入式系统,信息系统安全。