微信公众号开发,主要可以分为2大块
服务端开发
公众号服务端的开发,基于公众平台提供的那套接口,可以玩的花样比较少。总结一些小经验
利用菜单生成URL
看了很多公众号,一个普遍的做法是,点击下方的菜单之后,不是直接跳到页面上,而是返回一个图文消息,再点击图文消息,才会跳到新页面上
看起来有点多此一举,直接跳走不是更方便吗?这样做的目的是为了动态地生成URL。下面的菜单,一般都是固定的,粉丝点击了直接就跳走了,没有机会在服务器过一道。但是如果设置成EVENT,微信服务器就会往开发者服务器推一条消息,并且带有粉丝和公众号的open_id,利用这个就可以做文章,做一些逻辑,生成新的URL等等。尤其对很多平台提供商来说,比如微盟等,这是必须的。因为所有公众号,都是走到他们的服务器上,必须要区分出不同的公众号才行
向粉丝推消息的方法
在8月27日之前,公众号想给粉丝发消息,大体上只有3个方法。一是每个月固定数量的群发,二是被动回复,三是客服消息。这3种方法的缺陷都很明显
第一种方法不仅数量有限制(还相当苛刻),而且很难实现点对点的精准发送;第二和第三种方法,虽然能点对点发送,但是前提都是粉丝要先跟公众号交互(点击菜单,发消息都算),所以没法实现主动的推送
但是我注意到有一些公众号的体验就相当好,比如招商银行,拉勾网,在需要的时候,会主动给我发一条消息,完全不受上面三种方法的限制
其实他们调用的是“模板消息”接口,只不过这个接口内测了很长时间,所以一般的公众号没有机会使用。从8月27日起,微信已经开放了这个接口,所以这种体验,一般的公众号也可以做到了。当然,必须是认证服务号
图文消息带链接
原来我发现,我返回的图文消息,用户点开以后,都是跳到一个我指定的URL,而不是通过公众账号管理后台人工编辑出来的那种形式。后来观察了一下,发现这种图文消息的URL,都是类似这样的:
http://mp.weixin.qq.com/s?__biz=MjAzNzMzNTkyMQ==&mid=201391418&idx=2&sn=34bbeb346775724ef15cec07de66b3a3#rd。点开以后可以发现,里面有微信嵌入的html和js
所以,要通过接口拼出这样的图文消息,需要实际有这样一个媒体资源存在,似乎是要通过高级接口上传媒体资源,然后根据MediaId来拼。暂时没发现更简单的办法
web端开发
在微信内置浏览器里打开的网页,可以调用WeixinJSBridge上的方法,在普通的浏览器里打开的话,就不存在这个全局对象
令人发指的是,微信官方文档里,只公开了4个无关痛痒的API。所以很长一段时间,我都不知道WeixinJSBridge能做的事情,远远不止文档里提到的那么多
比如分享到朋友圈之后的回调,分享到朋友圈自定义URL,这2个功能,截止到本文(2014年9月10日)都是可用的。更早以前,还可以通过WeixinJSBridge实现一键分享,一键关注等,不过现在被微信封了
这个对象里的接口,未来或许是正式公开,或许是也被封掉,现在还不清楚。但是目前至少分享行为是可控的,所以强烈推荐大家试一下这个js lib,把WeixinJSBridge的私有API整理了一遍,调用也很方便: