微信公众号开发(四)—— 自定义菜单的创建
来源:互联网 发布:按摩棒 知乎 编辑:程序博客网 时间:2024/06/03 16:12
自定义菜单创建接口
1、自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。
2、一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“…”代替。
3、创建自定义菜单后,菜单的刷新策略是,在用户进入公众号会话页或公众号profile页时,如果发现上一次拉取菜单的请求在5分钟以前,就会拉取一下菜单,如果菜单有更新,就会刷新客户端的菜单。测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。
1. 根据 XML 消息,创建按钮和菜单的 Po 类
根据微信文档,XML 的正确的格式需要包含:最外层是一个菜单类,中间包括着 click 和 view 的按钮类,其他类型做法类似。
创建按钮 Po 类 button
public class Button { //菜单类型 private String type; //菜单名称 private String name; //可以包含多个菜单项(二级菜单数组,个数应为1~5个)
创建 click 和 view 类型的 button
public class ClickButton extends Button{ //click等点击类型必须 private String key;
public class ViewButton extends Button{ //view类型的路径 private String url;
以及最外层的 menu
public class Menu { //菜单中包含的button private Button[] button;
2. 组装一个 menu
1、click:点击推事件
用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event 的结构给开发者(参考消息接口指南),并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值与用户进行交互;
2、view:跳转URL
用户点击view类型按钮后,微信客户端将会打开开发者在按钮中填写的网页URL,可与网页授权获取用户基本信息接口结合,获得用户基本信息。
按照按钮类型创建相应的菜单,如下:
点击按钮
ClickButton button11 = new ClickButton(); button11.setName("click菜单"); button11.setType("click"); button11.setKey("11");
跳转按钮
ViewButton button21 = new ViewButton(); button21.setName("view菜单"); button21.setType("view"); button21.setUrl("http://www.baidu.com");
菜单包含多层可以嵌套
Button button = new Button(); button.setName("菜单组"); button.setSub_button(new Button[]{button31,button32});
最后将按钮组装到菜单中
public static Menu initMenu(){ Menu menu = new Menu(); /** 创建需要的按钮 **/ menu.setButton(new Button[]{...添加按钮}); return menu;
3. 创建菜单
public static int createMenu(String token,String menu) throws ParseException, IOException{ int result = 0; String url = CREATE_MENU_URL.replace("ACCESS_TOKEN", token); JSONObject jsonObject = doPostStr(url, menu); if(jsonObject != null){ result = jsonObject.getInt("errcode"); } return result; }
public class WeixinTest { public static void main(String[] args) { String menu = JSONObject.fromObject(WeiXinUtil.initMenu()).toString(); try { AccessToken token = WeiXinUtil.getAccessToken(); System.out.println("票据"+token.getToken()); System.out.println("有效时间"+token.getExpiresIn()); int result = WeiXinUtil.createMenu(token.getToken(), menu); if(result == 0){ System.out.println("创建菜单成功"); }else{ System.out.println("错误码:" + result); } } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
票据
MS_vadelbHZaduVfhzaOIW0rqWB2mbU8tN4vJhUwh6DYmtwsF3VYdRsyNU52CgqyROSI22WHwMmeYe3nW9kausVqCoDs9x1LDKbKYXttXEIN9eeXCP0TBNKegZsygLlATUJgAJAHIX
有效时间7200
创建菜单成功
- 微信公众号开发(四)—— 自定义菜单的创建
- 【微信公众平台开发】创建自定义菜单(四)
- 【微信公众平台开发】创建自定义菜单(四)
- 微信公众号开发(四)自定义菜单
- 微信公众号开发(五)创建自定义菜单
- 微信公众号开发---自定义菜单的创建及菜单事件响应(java)
- Java微信公众平台开发(十)——微信自定义菜单的创建实现
- 微信公众号开发之创建自定义菜单
- .NET微信公众号开发之创建自定义菜单
- 手把手教会你微信公众平台自定义菜单开发——创建菜单
- 微信公众号开发--自定义菜单
- 微信公众平台开发学习记录(2)————自定义菜单创建
- 微信公众号的开发之 自定义菜单(二)
- 微信公众帐号开发-自定义菜单的创建及菜单事件响应的实例
- 二十四:微信公众帐号开发-自定义菜单的创建及菜单事件响应
- 微信公众帐号开发-自定义菜单的创建及菜单事件响应
- 微信公众号开发(三)--自定义菜单
- 微信公众帐号开发教程第14篇-自定义菜单的创建及菜单事件响应 (14)
- /*****/二叉树经典面试题
- leetcode题解-11. Container With Most Water
- extern "C" __declspec(dllexport) 用法
- 3D 声音实验室开始提供3D音频制作
- sql server 2008 com.microsoft.sqlserver.jdbc.SQLServerException: 通过端口 1433 连接到主机
- 微信公众号开发(四)—— 自定义菜单的创建
- 总结Intent的用法例子
- 【机房重构】下机——职责链模式+策略模式(实践篇)
- Docker之常用命令
- Android 开发 Tip 13 -- generateViewId
- ORA-28000账户被锁和解锁
- java多线程同步方式(无讲解)
- ionic异常记录
- Oracle不同时间格式的切换