微信公众帐号开发之自定义菜单的view类型
白羽 2018-06-26 来源 :网络 阅读 1070 评论 0

摘要:本文将带你了解微信公众帐号开发之自定义菜单的view类型,希望本文对大家学微信有所帮助。


 

本篇文章就为大家介绍下view类型的自定义菜单该如何创建。

 

自定义菜单的两种类型(click和view)

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

[html] view plain copy

1. {     

2.     "type":"click",  

3.     "name":"今日歌曲",  

4.     "key":"V1001_TODAY_MUSIC"  

5. },  

6. {  

7.     "type":"view",  

8.     "name":"歌手简介",  

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

10. }  

从上面可以看出,两种类型的菜单除了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 plain copy
1. package org.liufeng.weixin.pojo;  
2.   
3. /** 
4.  * view类型的菜单 
5.  *  
6.  * @author liuyq 
7.  * @date 2013-04-10 
8.  */  
9. public class ViewButton extends Button {  
10.     private String type;  
11.     private String url;  
12.   
13.     public String getType() {  
14.         return type;  
15.     }  
16.   
17.     public void setType(String type) {  
18.         this.type = type;  
19.     }  
20.   
21.     public String getUrl() {  
22.         return url;  
23.     }  
24.   
25.     public void setUrl(String url) {  
26.         this.url = url;  
27.     }  
28. }

创建带view类型的菜单示例


[java] view plain copy
1. package org.liufeng.weixin.main;  
2.   
3. import org.liufeng.weixin.pojo.AccessToken;  
4. import org.liufeng.weixin.pojo.Button;  
5. import org.liufeng.weixin.pojo.CommonButton;  
6. import org.liufeng.weixin.pojo.ComplexButton;  
7. import org.liufeng.weixin.pojo.Menu;  
8. import org.liufeng.weixin.pojo.ViewButton;  
9. import org.liufeng.weixin.util.WeixinUtil;  
10. import org.slf4j.Logger;  
11. import org.slf4j.LoggerFactory;  
12.   
13. /** 
14.  * 菜单管理器类 
15.  *  
16.  * @author liufeng 
17.  * @date 2013-08-08 
18.  */  
19. public class MenuManager {  
20.     private static Logger log = LoggerFactory.getLogger(MenuManager.class);  
21.   
22.     public static void main(String[] args) {  
23.         // 第三方用户唯一凭证  
24.         String appId = "000000000000000000";  
25.         // 第三方用户唯一凭证密钥  
26.         String appSecret = "00000000000000000000000000000000";  
27.   
28.         // 调用接口获取access_token  
29.         AccessToken at = WeixinUtil.getAccessToken(appId, appSecret);  
30.   
31.         if (null != at) {  
32.             // 调用接口创建菜单  
33.             int result = WeixinUtil.createMenu(getMenu(), at.getToken());  
34.   
35.             // 判断菜单创建结果  
36.             if (0 == result)  
37.                 log.info("菜单创建成功!");  
38.             else  
39.                 log.info("菜单创建失败,错误码:" + result);  
40.         }  
41.     }  
42.   
43.     /** 
44.      * 组装菜单数据 
45.      *  
46.      * @return 
47.      */  
48.     private static Menu getMenu() {  
49.         CommonButton btn11 = new CommonButton();  
50.         btn11.setName("天气预报");  
51.         btn11.setType("click");  
52.         btn11.setKey("11");  
53.   
54.         CommonButton btn12 = new CommonButton();  
55.         btn12.setName("公交查询");  
56.         btn12.setType("click");  
57.         btn12.setKey("12");  
58.   
59.         CommonButton btn13 = new CommonButton();  
60.         btn13.setName("周边搜索");  
61.         btn13.setType("click");  
62.         btn13.setKey("13");  
63.   
64.         CommonButton btn14 = new CommonButton();  
65.         btn14.setName("历史上的今天");  
66.         btn14.setType("click");  
67.         btn14.setKey("14");  
68.           
69.         CommonButton btn15 = new CommonButton();  
70.         btn15.setName("电影排行榜");  
71.         btn15.setType("click");  
72.         btn15.setKey("32");  
73.   
74.         CommonButton btn21 = new CommonButton();  
75.         btn21.setName("歌曲点播");  
76.         btn21.setType("click");  
77.         btn21.setKey("21");  
78.   
79.         CommonButton btn22 = new CommonButton();  
80.         btn22.setName("经典游戏");  
81.         btn22.setType("click");  
82.         btn22.setKey("22");  
83.   
84.         CommonButton btn23 = new CommonButton();  
85.         btn23.setName("美女电台");  
86.         btn23.setType("click");  
87.         btn23.setKey("23");  
88.   
89.         CommonButton btn24 = new CommonButton();  
90.         btn24.setName("人脸识别");  
91.         btn24.setType("click");  
92.         btn24.setKey("24");  
93.   
94.         CommonButton btn25 = new CommonButton();  
95.         btn25.setName("聊天唠嗑");  
96.         btn25.setType("click");  
97.         btn25.setKey("25");  
98.   
99.         CommonButton btn31 = new CommonButton();  
100.         btn31.setName("Q友圈");  
101.         btn31.setType("click");  
102.         btn31.setKey("31");  
103.   
104.         CommonButton btn33 = new CommonButton();  
105.         btn33.setName("幽默笑话");  
106.         btn33.setType("click");  
107.         btn33.setKey("33");  
108.           
109.         CommonButton btn34 = new CommonButton();  
110.         btn34.setName("用户反馈");  
111.         btn34.setType("click");  
112.         btn34.setKey("34");  
113.           
114.         CommonButton btn35 = new CommonButton();  
115.         btn35.setName("关于我们");  
116.         btn35.setType("click");  
117.         btn35.setKey("35");  
118.           
119.         ViewButton btn32 = new ViewButton();  
120.         btn32.setName("使用帮助");  
121.         btn32.setType("view");  
122.         btn32.setUrl("//liufeng.gotoip2.com/xiaoqrobot/help.jsp");  
123.   
124.         ComplexButton mainBtn1 = new ComplexButton();  
125.         mainBtn1.setName("生活助手");  
126.         mainBtn1.setSub_button(new Button[] { btn11, btn12, btn13, btn14, btn15 });  
127.   
128.         ComplexButton mainBtn2 = new ComplexButton();  
129.         mainBtn2.setName("休闲驿站");  
130.         mainBtn2.setSub_button(new Button[] { btn21, btn22, btn23, btn24, btn25 });  
131.   
132.         ComplexButton mainBtn3 = new ComplexButton();  
133.         mainBtn3.setName("更多");  
134.         mainBtn3.setSub_button(new Button[] { btn31, btn33, btn34, btn35, btn32 });  
135.   
136.         /** 
137.          * 这是公众号xiaoqrobot目前的菜单结构,每个一级菜单都有二级菜单项<br> 
138.          *  
139.          * 在某个一级菜单下没有二级菜单的情况,menu该如何定义呢?<br> 
140.          * 比如,第三个一级菜单项不是“更多体验”,而直接是“幽默笑话”,那么menu应该这样定义:<br> 
141.          * menu.setButton(new Button[] { mainBtn1, mainBtn2, btn33 }); 
142.          */  
143.         Menu menu = new Menu();  
144.         menu.setButton(new Button[] { mainBtn1, mainBtn2, mainBtn3 });  
145.   
146.         return menu;  
147.     }  
148. }  
119~122行代码就是用于创建view类型菜单项的。


 

 


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之微信频道!


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程