微信自定义菜单的两种类型click和view.docx
- 文档编号:15589616
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:7
- 大小:15.73KB
微信自定义菜单的两种类型click和view.docx
《微信自定义菜单的两种类型click和view.docx》由会员分享,可在线阅读,更多相关《微信自定义菜单的两种类型click和view.docx(7页珍藏版)》请在冰点文库上搜索。
微信自定义菜单的两种类型click和view
微信自定义菜单的两种类型(click和view)
自定义菜单的两种类型(click和view)
公众平台API文档中给出了自定义菜单的json结构示例,我从中截取两个菜单项的json代码,一个是click类型,另一个是view类型,如下所示。
{
"type":
"click",
"name":
"今日歌曲",
"key":
"V1001_TODAY_MUSIC"
},
{
"type":
"view",
"name":
"歌手简介",
"url":
"qq/"
}
从上面可以看出,两种类型的菜单除了type值不同之外,属性也有差别。
click类型的菜单有key属性,而view类型的菜单没有key属性,与之对应的是url属性。
通过上一篇的学习我们知道,key值是用于判断用户点击了哪个click类型的菜单项。
而view类型的菜单没有key属性,目前无法在公众账号后台判断是否有用户点击了view类型的菜单项,也就没办法知道哪个用户点击了view类型的菜单项。
建立view类型的菜单对象
View类型的菜单有3个属性:
type、name和url。
在上一篇文章中,我们创建了菜单项的基类Button,Button类只有一个属性name。
View类型的菜单对象也需要继承Button类,代码如下:
/**
*view类型的菜单
*
*@author
*@date
*/
publilassViewButtonextendsButton{
privateStringtype;
privateStringurl;
publicStringgetType(){
returntype;
}
publicvoidsetType(Stringtype){
this.type=type;
}
publicStringgetUrl(){
returnurl;
}
publicvoidsetUrl(Stringurl){
this.url=url;
}
}创建带view类型的菜单示例
我们对前一篇文章中给出的菜单创建代码进行调整,增加view类型的菜单项,完整的菜单创建代码如下:
import.liufeng.weixin.pojo.AessToken;
import.liufeng.weixin.pojo.Button;
import.liufeng.weixin.pojo.CommonButton;
import.liufeng.weixin.pojo.ComplexButton;
import.liufeng.weixin.pojo.Menu;
import.liufeng.weixin.pojo.ViewButton;
import.liufeng.weixin.util.WeixinUtil;
import.slf4j.Logger;
import.slf4j.LoggerFactory;
/**
*菜单管理器类
*
*@author
*@date2013-08-08
*/
publilassMenuManager{
privatestaticLoggerlog=LoggerFactory.getLogger(MenuManager.class);
publicstaticvoidmain(String[]args){
//第三方用户唯一凭证
StringappId="000000000000000000";
//第三方用户唯一凭证密钥
StringappSecret="00000000000000000000000000000000";
//调用接口获取aess_token
AessTokenat=WeixinUtil.getAessToken(appId,appSecret);
if(null!
=at){
//调用接口创建菜单
intresult=WeixinUtil.createMenu(getMenu(),at.getToken());
//判断菜单创建结果
if(0==result)
log.info("菜单创建成功!
");
else
log.info("菜单创建失败,错误码:
"+result);
}
}
/**
*组装菜单数据
*
*@return
*/
privatestaticMenugetMenu(){
CommonButtonbtn11=newCommonButton();
btn11.setName("天气预报");
btn11.setType("click");
btn11.setKey("11");
CommonButtonbtn12=newCommonButton();
btn12.setName("公交查询");
btn12.setType("click");
btn12.setKey("12");
CommonButtonbtn13=newCommonButton();
btn13.setName("周边搜索");
btn13.setType("click");
btn13.setKey("13");
CommonButtonbtn14=newCommonButton();
btn14.setName("历史上的今天");
btn14.setType("click");
btn14.setKey("14");
CommonButtonbtn15=newCommonButton();
btn15.setName("电影排行榜");
btn15.setType("click");
btn15.setKey("32");
CommonButtonbtn21=newCommonButton();
btn21.setName("歌曲点播");
btn21.setType("click");
btn21.setKey("21");
CommonButtonbtn22=newCommonButton();
btn22.setName("经典游戏");
btn22.setType("click");
btn22.setKey("22");
CommonButtonbtn23=newCommonButton();
btn23.setName("美女电台");
btn23.setType("click");
btn23.setKey("23");
CommonButtonbtn24=newCommonButton();
btn24.setName("人脸识别");
btn24.setType("click");
btn24.setKey("24");
CommonButtonbtn25=newCommonButton();
btn25.setName("聊天唠嗑");
btn25.setType("click");
btn25.setKey("25");
CommonButtonbtn31=newCommonButton();
btn31.setName("Q友圈");
btn31.setType("click");
btn31.setKey("31");
CommonButtonbtn33=newCommonButton();
btn33.setName("幽默笑话");
btn33.setType("click");
btn33.setKey("33");
CommonButtonbtn34=newCommonButton();
btn34.setName("用户反馈");
btn34.setType("click");
btn34.setKey("34");
CommonButtonbtn35=newCommonButton();
btn35.setName("关于我们");
btn35.setType("click");
btn35.setKey("35");
ViewButtonbtn32=newViewButton();
btn32.setName("使用帮助");
btn32.setType("view");
btn32.setUrl("gotoip2/xiaoqrobot/help.jsp");
ComplexButtonmainBtn1=newComplexButton();
mainBtn1.setName("生活助手");
mainBtn1.setSub_button(newButton[]{btn11,btn12,btn13,btn14,btn15});
ComplexButtonmainBtn2=newComplexButton();
mainBtn2.setName("休闲驿站");
mainBtn2.setSub_button(newButton[]{btn21,btn22,btn23,btn24,btn25});
ComplexButtonmainBtn3=newComplexButton();
mainBtn3.setName("更多");
mainBtn3.setSub_button(newButton[]{btn31,btn33,btn34,btn35,btn32});
/**
*这是公众号xiaoqrobot目前的菜单结构,每个一级菜单都有二级菜单项<br
*
*在某个一级菜单下没有二级菜单的情况,menu该如何定义呢<br
*比如,第三个一级菜单项不是“更多体验”,而直接是“幽默笑话”,那么menu应该这样定义:
<br
*menu.setButton(newButton[]{mainBtn1,mainBtn2,btn33});
*/
Menumenu=newMenu();
menu.setButton(newButton[]{mainBtn1,mainBtn2,mainBtn3});
returnmenu;
}
}原作者:
柳峰
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自定义 菜单 种类 click view