美文网首页
微信菜单开发

微信菜单开发

作者: Easy的幸福 | 来源:发表于2017-02-15 11:06 被阅读0次

因为今天需要开发微信,然后就从网上找了个示例:觉得还不错。原文链接如下:

http://blog.csdn.net/gf771115/article/details/16825447(基础菜单)

http://blog.csdn.net/gf771115/article/details/16825447(自定义菜单)

公众平台API文档中给出了自定义菜单的json结构示例,我从中截取两个菜单项的json代码,一个是click类型,另一个是view类型,如下所示。

[html]view

plaincopy

{

"type":"click",

"name":"今日歌曲",

"key":"V1001_TODAY_MUSIC"

},

{

"type":"view",

"name":"歌手简介",

"url":"http://www.qq.com/"

}

从上面可以看出,两种类型的菜单除了type值不同之外,属性也有差别。click类型的菜单有key属性,而view类型的菜单没有key属性,与之对应的是url属性。通过上一篇的学习我们知道,key值是用于判断用户点击了哪个click类型的菜单项。而view类型的菜单没有key属性,目前无法在公众账号后台判断是否有用户点击了view类型的菜单项,也就没办法知道哪个用户点击了view类型的菜单项。

建立view类型的菜单对象

View类型的菜单有3个属性:type、name和url。在上一篇文章中,我们创建了菜单项的基类Button,Button类只有一个属性name。View类型的菜单对象也需要继承Button类,代码如下:

[java]view

plaincopy

packageorg.liufeng.weixin.pojo;

/**

* view类型的菜单

*

* @author liuyq

* @date 2013-04-10

*/

publicclassViewButtonextendsButton {

privateString type;

privateString url;

publicString getType() {

returntype;

}

publicvoidsetType(String type) {

this.type = type;

}

publicString getUrl() {

returnurl;

}

publicvoidsetUrl(String url) {

this.url = url;

}

}

创建带view类型的菜单示例

我们对前一篇文章中给出的菜单创建代码进行调整,增加view类型的菜单项,完整的菜单创建代码如下:

[java]view

plaincopy

packageorg.liufeng.weixin.main;

importorg.liufeng.weixin.pojo.AccessToken;

importorg.liufeng.weixin.pojo.Button;

importorg.liufeng.weixin.pojo.CommonButton;

importorg.liufeng.weixin.pojo.ComplexButton;

importorg.liufeng.weixin.pojo.Menu;

importorg.liufeng.weixin.pojo.ViewButton;

importorg.liufeng.weixin.util.WeixinUtil;

importorg.slf4j.Logger;

importorg.slf4j.LoggerFactory;

/**

* 菜单管理器类

*

* @author liufeng

* @date 2013-08-08

*/

publicclassMenuManager {

privatestaticLogger log = LoggerFactory.getLogger(MenuManager.class);

publicstaticvoidmain(String[] args) {

// 第三方用户唯一凭证

String appId ="000000000000000000";

// 第三方用户唯一凭证密钥

String appSecret ="00000000000000000000000000000000";

// 调用接口获取access_token

AccessToken at = WeixinUtil.getAccessToken(appId, appSecret);

if(null!= at) {

// 调用接口创建菜单

intresult = WeixinUtil.createMenu(getMenu(), at.getToken());

// 判断菜单创建结果

if(0== result)

log.info("菜单创建成功!");

else

log.info("菜单创建失败,错误码:"+ result);

}

}

/**

* 组装菜单数据

*

* @return

*/

privatestaticMenu getMenu() {

CommonButton btn11 =newCommonButton();

btn11.setName("天气预报");

btn11.setType("click");

btn11.setKey("11");

CommonButton btn12 =newCommonButton();

btn12.setName("公交查询");

btn12.setType("click");

btn12.setKey("12");

CommonButton btn13 =newCommonButton();

btn13.setName("周边搜索");

btn13.setType("click");

btn13.setKey("13");

CommonButton btn14 =newCommonButton();

btn14.setName("历史上的今天");

btn14.setType("click");

btn14.setKey("14");

CommonButton btn15 =newCommonButton();

btn15.setName("电影排行榜");

btn15.setType("click");

btn15.setKey("32");

CommonButton btn21 =newCommonButton();

btn21.setName("歌曲点播");

btn21.setType("click");

btn21.setKey("21");

CommonButton btn22 =newCommonButton();

btn22.setName("经典游戏");

btn22.setType("click");

btn22.setKey("22");

CommonButton btn23 =newCommonButton();

btn23.setName("美女电台");

btn23.setType("click");

btn23.setKey("23");

CommonButton btn24 =newCommonButton();

btn24.setName("人脸识别");

btn24.setType("click");

btn24.setKey("24");

CommonButton btn25 =newCommonButton();

btn25.setName("聊天唠嗑");

btn25.setType("click");

btn25.setKey("25");

CommonButton btn31 =newCommonButton();

btn31.setName("Q友圈");

btn31.setType("click");

btn31.setKey("31");

CommonButton btn33 =newCommonButton();

btn33.setName("幽默笑话");

btn33.setType("click");

btn33.setKey("33");

CommonButton btn34 =newCommonButton();

btn34.setName("用户反馈");

btn34.setType("click");

btn34.setKey("34");

CommonButton btn35 =newCommonButton();

btn35.setName("关于我们");

btn35.setType("click");

btn35.setKey("35");

ViewButton btn32 =newViewButton();

btn32.setName("使用帮助");

btn32.setType("view");

btn32.setUrl("http://liufeng.gotoip2.com/xiaoqrobot/help.jsp");

ComplexButton mainBtn1 =newComplexButton();

mainBtn1.setName("生活助手");

mainBtn1.setSub_button(newButton[] { btn11, btn12, btn13, btn14, btn15 });

ComplexButton mainBtn2 =newComplexButton();

mainBtn2.setName("休闲驿站");

mainBtn2.setSub_button(newButton[] { btn21, btn22, btn23, btn24, btn25 });

ComplexButton mainBtn3 =newComplexButton();

mainBtn3.setName("更多");

mainBtn3.setSub_button(newButton[] { btn31, btn33, btn34, btn35, btn32 });

/**

* 这是公众号xiaoqrobot目前的菜单结构,每个一级菜单都有二级菜单项

*

* 在某个一级菜单下没有二级菜单的情况,menu该如何定义呢?

* 比如,第三个一级菜单项不是“更多体验”,而直接是“幽默笑话”,那么menu应该这样定义:

* menu.setButton(new Button[] { mainBtn1, mainBtn2, btn33 });

*/

Menu menu =newMenu();

menu.setButton(newButton[] { mainBtn1, mainBtn2, mainBtn3 });

returnmenu;

}

}

119~122行代码就是用于创建view类型菜单项的。

相关文章

网友评论

      本文标题:微信菜单开发

      本文链接:https://www.haomeiwen.com/subject/rtqqwttx.html