自定义菜单的创建
微信公众号设置开发模式之后,本身自带的菜单按钮就不能够使用了,此时微信开放了自定义菜单的接口让开发者使用,这比自带的菜单功能要强大的多,因为普通模式下的菜单每次修改需要等待24个小时左右,而自定义菜单修改并不需要等待.
首先是url地址https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN,access_token就是我上一篇文章中获取到的唯一凭证,后文中不再赘续,该请求是POST请求,所以我们可以使用httppost方法(自定义方法,请看上篇文章).
自定义菜单分为一级菜单和二级菜单,最多3个一级菜单,每个一级菜单最多包含五个二级菜单,一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分会以..代替,请注意
菜单的类型有很多,我们常用的有view,click,media_id这三种,其他的不在此赘叙,如有需要可以查看开发文档
view : 用户点击后会推送event事件给公众号,类似于用户发送消息给我们的服务器,类型是event,在我们的项目 中可以使用消息接受模块接收,key值代表需要推送的事件,可以自己设置
click : 点击跳转url
media_id : 点击推送素材(这个内容关系到素材的上传和下载,后面的文章中会写出来)
大致上使用的就这三种类型,参数说明在开发文档中查看
在项目中新建一个JAVA类来存放自己设置的菜单信息,最好放入数据库中保存
package com.pub.vo;
import java.util.List;
public class WechatMenuVo {
private String type;
private String name;
private String key;
private String url;
private String media_id;
private List<WechatMenuVo> sub_button;
private Long parent;
private Long id;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getMedia_id() {
return media_id;
}
public void setMedia_id(String media_id) {
this.media_id = media_id;
}
public List<WechatMenuVo> getSub_button() {
return sub_button;
}
public void setSub_button(List<WechatMenuVo> sub_button) {
this.sub_button = sub_button;
}
public WechatMenuVo(){
}
public Long getParent() {
return parent;
}
public void setParent(Long parent) {
this.parent = parent;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
最后利用jackson的ObjectMapper将值转化为JSON字符串,调用httppost方法发送给微信服务器,返回正确时的数据包为
{"errcode":0,"errmsg":"ok"}