摘要:本文将带你了解微信公众帐号开发之自定义菜单的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类型菜单项的。
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之微信频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号