摘要:刘运强,网名“柳峰”,《微信公众平台应用开发:方法、技巧与案例》一书作者,微信平台早期开发者之一,本文是对他的专访,主要分享了他的微信开发经验。
刘运强,网名“柳峰”,一个热爱软件开发的80后。计算机研究生毕业,先后就职于亚信联创、贵州年华科技两家公司,担任过BI工程师、Java工程师、技术经理、研发部经理等职位。兼职做过几年Java、Android、Linux就业开发培训。工作之余,喜欢打羽毛球、骑单车、看电影、旅游,当然也会花不少时间来学习,不断充实武装自己。下面是对他的专访全文(部分提取网友问题)。
图:柳峰
CSDN:你自己具体是从什么时候开始做微信平台的开发的?
答:我是从2013年3月开始接触微信公众平台开发,那时微信公众平台才推出7个月左右,微信公众账号还没有自定义菜单。
CSDN:微信是一个新的平台,你一开始开发的时候是否遇到了什么技术上的困难?怎么解决的?
答:在微信公众平台开发过程中,的确遇到过一些技术问题,这里就例举几个大家都比较关心的技术问题。
1)微信服务器与第三方平台是明文传递消息,那么如何保障数据安全?建议非敏感数据采用普通消息(文本、图片、语音等)传递,敏感数据通过网页呈现,可以使用HTTPS加密传输。
2)如何使用Java发起HTTPS请求?这需要了解JSSE相关知识、理解信任管理器的处理规则才能编写出相关实现代码。这部分内容在我的博客和《微信公众平台应用开发:方法、技巧与案例》一书中都有详细介绍。
3)一套处理程序如何服务于多个微信公众账号?问题的关键在于处理程序如何区分请求来自于哪个公众账号,通常的实现方式有两种:1)通过URL+参数区分不同的公众账号;2)直接根据请求消息中的ToUserName区分不同的公众账号。
CSDN:帮企业搭建微信平台要搭建服务部署到公网上,是否有什么成熟的框架?
答:就拿Java语言来说,开发微信公众账号可以借助于Struts2、Spring、Hibernate、iBatis等框架实现,这些也是Java Web开发主要用到的技术框架,功能强大,使用简单。如果是开发微网站,可以考虑使用jQuery mobile,这是一套移动Web应用程序开发框架。
CSDN:目前市场上微信平台主流的都是用php开发的,为什么会造成这一现象呢?
答:首先,需要说明的微信公众平台开发与具体的语言无关,凡是支持Web开发的语言都可以用于微信公众平台开发,甚至可以说,开发完成的微信公众账号处理程序就是一套Web程序。至于为什么大多数开发者会选择使用PHP开发微信公众账号,我认为主要有以下几点原因:
1)相对而言,Java的学习成本要比PHP高很多,Java语言涉及的面也更广泛。PHP主要用于开发Web应用,而Java可以用于Web应用、桌面应用和手机应用开发。
2)Java的优势在于面向对象的分层架构设计上,更适合开发大型企业应用;而对于中小企业应用,PHP的开发速度更快。
3)几乎所有的虚拟主机都支持PHP+MySQL,但支持Java的却很少;支持Java的虚拟主机要比支持PHP的虚拟主机贵很多。
4)PHP是微信官方推荐语言。微信官方提供的微信公众平台SDK和Demo只有PHP的,没有其他语言的,这使得采用PHP开发微信公众账号有更多示例代码可参考。
5)网络上关于Java、.NET、Ruby等其他语言开发微信公众账号的资料非常少。
CSDN:对于个人开发者来说,提供各种查询功能的公众平台对用户来说没有什么吸引力。那么,是否把公众平台当做用户入口,开发Web App才是正途?类似轻应用那样?但是公众平台又不能调用手机的接口,以后会有这方面的发展趋势吗?
答:首先,我认为微信公众账号就是一种轻应用,不应该说成是“类似轻应用”。其次,微信公众账号支持多种类型的消息,包括文本、图片、语音、视频、音乐和图文。当用户点击文本消息中的网页链接或图文消息后,都会通过微信内置浏览器打开一个网页,通过网页呈现内容,所以,我认为Web开发本就是微信公众账号开发的一部分。最后,微信公众账号是能够调用手机的摄像头、麦克风等设备。理论上,微信APP能够访问的硬件设备、接口,微信公众账号都能访问,这完全取决于未来微信的开放力度。
CSDN:微信平台开发和iOS、Android开发的异同是什么?新手重点应该注意哪些?
答:相对而言,微信公众平台开发要比iOS、Android开发简单,容易上手。iOS开发采用Objective-C语言,Android开发采用Java语言,而微信公众平台开发可选择的语言有很多,例如:Java、PHP、.NET、Ruby、Node.js等。iOS/Android开发的很多时间会放在UI设计布局上,而微信公众平台开发则更专注于功能的实现。新手在接触微信公众平台开发之前,应该打好Web开发基础,挑选使用自己最熟悉擅长的编程语言。
CSDN:在微信上,用户的使用场景对微信开发的影响是什么?
答:开发微信公众账号的目的就是为了支撑用户的各种使用场景,微信公众账号的功能往往并不要求有多复杂,但要非常重视用户的使用场景,充分挖掘、掌握用户的需求。用户的使用场景决定着微信公众平台开发的方向,开发者应给予足够的重视,充分挖掘微信平台的价值,发现未满足的用户场景需求,提供有独特价值的服务。
CSDN:微信智能开放平台8日上线,该平台的上线,对于您这样的开发者来说有什么样的机会?
答:公司有不少项目涉及Android/iOS应用开发,客户之前也提过类似语音搜索、自然语言理解这类的需求,有了微信智能开放平台,这类需求能够得到很好地满足,为用户提供更便捷的使用体验。相信微信智能开放平台也给不少开发者、创业团队带来了希望,能够设计开发出更多有创意的产品。
CSDN:微信智能开放平台上,语音和图像识别成首批开放的智能技术,您认为这两种识别技术的应用场景会有哪些?
答:对于开发者而言,语音识别和图像识别的门槛都非常高,很多时候只能采用一些变相折衷的方式实现,用户体验差。微信此次能够开放语音和图像识别技术,无疑是开发者的福音,对于减少技术开发投入、提升用户体验有很大帮助。
语音识别技术的重点在于语音输入,这使得用户能够直接用语音进行功能操作,该技术可以应用于语音搜索、智能家电(设备)等应用领域。
图像识别技术可以将图像作为输入元素,获取与图像相关联的网站、音频、视频、社交媒体、电子商务渠道等内容,这给传统媒体和电商带来更多机会,可以实现类似于扫描图片参与抽奖、扫描图片购买商品等应用场景。
CSDN:微信智能开放平台在未来还会开放语义理解、人脸识别等技术,您比较期待什么技术?
答:在我的微信公众账号小q机器人(微信号:xiaoqrobot)中体验“人脸识别”功能,可以识别出相片中的人脸数、人脸顺序、性别、种族、年龄等信息,这是我用Facee++平台提供的人脸识别技术 API开发实现的一个娱乐功能。
相对于人脸识别,我更期待微信智能开放平台的语义理解技术。以前在做垂直搜索引擎、智能应答机器人时,都有涉及对自然语言理解的学习和研究,对该领域非常感兴趣。