메시지를 남겨주신 것을 환영합니다.
프로젝트 소스 코드 참조 주소를 보려면 저를 클릭하세요--시작을 환영합니다
이전 기사에서 프로젝트를 가져오는 방법을 이미 설명했습니다. 구성 프로젝트를 시작하는 방법, 개발자가 되는 방법, 소스 코드 분석 메시지와 상호 작용하는 방법(처음 네 가지 항목이 명확하지 않은 경우 여기를 읽고 WeChat 공개 계정을 빠르게 개발할 수 있습니다. 이 기사에서는 방법에 대해 설명합니다. 사용자 정의 메뉴 구현
사용자 정의 메뉴를 구현하는 방법은 두 가지가 있습니다
1. 편집 모드
2. 개발 모드
편집 모드는 매우 간단합니다. 자세한 내용은 다루지 않겠습니다...
1. WeChat 공개 플랫폼 인터페이스 디버깅 도구를 사용하여 구현
2. 공식 인터페이스를 사용하여 구현
플러그인 추가참고:
1. 현재订阅号
편집 모드만 사용할 수 있으며, 개발 모드는 WeChat 인증 후에만 사용할 수 있습니다. 🎜>2. 편집모드와 개발모드는 동시에 켤 수 없습니다
3. 생성된 메뉴는 바로(다음날) 표시되지 않습니다. 바로 효과를 보고 싶으시면 언팔로우 하시면 됩니다. 다시
access_token
body
사실 메뉴를 생성해야 하는데 body
공식에서 제공하는데요. 참고로 JSON对象
{ "button":[ { "type":"click", "name":"今日歌曲", "key":"V1001_TODAY_MUSIC" }, { "name":"菜单", "sub_button":[ { "type":"view", "name":"搜索", "url":"http://www.soso.com/" }, { "type":"view", "name":"视频", "url":"http://v.qq.com/" }, { "type":"click", "name":"赞一下我们", "key":"V1001_GOOD" }] }] }
획득은 아래와 같습니다. access_token
Custom menu-get access_token.png
위챗 맞춤 메뉴를 처음 배우는 학생들은 공식문서를 3번 읽어보시길 권합니다
Jfinal-weixin
맞춤 메뉴-메뉴 캡슐화 인터페이스.png
제공되는 패키지는 다음과 같습니다.
//查询自定义菜单 public static ApiResult getMenu() { String jsonResult = HttpUtils.get(getMenu + AccessTokenApi.getAccessTokenStr()); return new ApiResult(jsonResult); } //创建自定义菜单 public static ApiResult createMenu(String jsonStr) { String jsonResult = HttpUtils.post(createMenu + AccessTokenApi.getAccessTokenStr(), jsonStr); return new ApiResult(jsonResult); } //删除自定义菜单 public static ApiResult deleteMenu() { String jsonResult = HttpUtils.get(deleteMenuUrl + AccessTokenApi.getAccessTokenStr()); return new ApiResult(jsonResult); } //创建个性化自定义菜单 public static ApiResult addConditional(String jsonStr) { String jsonResult = HttpUtils.post(addConditionalUrl + AccessTokenApi.getAccessTokenStr(), jsonStr); return new ApiResult(jsonResult); } //删除个性化自定义菜单 public static ApiResult delConditional(String menuid) { HashMap params = new HashMap(); params.put("menuid", menuid); String url = delConditionalUrl + AccessTokenApi.getAccessTokenStr(); String jsonResult = HttpUtils.post(url, JsonUtils.toJson(params)); return new ApiResult(jsonResult); } //测试个性化菜单匹配结果 public static ApiResult tryMatch(String userId) { HashMap params = new HashMap(); params.put("user_id", userId); String url = tryMatchUrl + AccessTokenApi.getAccessTokenStr(); String jsonResult = HttpUtils.post(url, JsonUtils.toJson(params)); return new ApiResult(jsonResult); } public static ApiResult getCurrentSelfMenuInfo() { String jsonResult = HttpUtils.get(getCurrentSelfMenuInfoUrl + AccessTokenApi.getAccessTokenStr()); return new ApiResult(jsonResult); }
public static void main(String[] args) { // 将菜单对象转换成json字符串 String jsonMenu = JsonKit.toJson(getTestMenu()).toString(); System.out.println(jsonMenu); ApiConfig ac = new ApiConfig(); // 配置微信 API 相关常量 请使用你自己公众号的 ac.setAppId("wx614c453e0d1dcd12"); ac.setAppSecret("19a02e4927d346484fc70327970457f9"); // ac.setAppId(PropKit.get("appId")); // ac.setAppSecret(PropKit.get("appSecret")); ApiConfigKit.setThreadLocalApiConfig(ac); //创建菜单 ApiResult apiResult=MenuApi.createMenu(jsonMenu); System.out.println(apiResult.getJson()); }
를 호출한 다음
com.javen.weixin.menu.MenuManager
에서 호출하는 것을 볼 수 있습니다. 메뉴의 엔터티 개체를 JSON으로
MenuApi.createMenu(jsonMenu)
jsonMenu
/** * 组装菜单数据 * * @return */ private static Menu getTestMenu() { ClickButton btn11 = new ClickButton(); btn11.setName("微信相册发图"); btn11.setType("pic_weixin"); btn11.setKey("rselfmenu_1_1"); ClickButton btn12 = new ClickButton(); btn12.setName("拍照或者相册发图"); btn12.setType("pic_photo_or_album"); btn12.setKey("rselfmenu_1_2");; ClickButton btn13 = new ClickButton(); btn13.setName("系统拍照发图"); btn13.setType("pic_sysphoto"); btn13.setKey("rselfmenu_1_3"); ClickButton btn21 = new ClickButton(); btn21.setName("扫码带提示"); btn21.setType("scancode_waitmsg"); btn21.setKey("rselfmenu_2_1");; ClickButton btn22 = new ClickButton(); btn22.setName("扫码推事件"); btn22.setType("scancode_push"); btn22.setKey("rselfmenu_2_2");; ViewButton btn23 = new ViewButton(); btn23.setName("我的设备"); btn23.setType("view"); btn23.setUrl("https://hw.weixin.qq.com/devicectrl/panel/device-list.html?appid=wx614c453e0d1dcd12"); ViewButton btn31 = new ViewButton(); btn31.setName("微社区"); btn31.setType("view"); btn31.setUrl("http://whsf.tunnel.mobi/whsf/msg/wsq"); ClickButton btn32 = new ClickButton(); btn32.setName("发送位置"); btn32.setType("location_select"); btn32.setKey("rselfmenu_3_2"); //http://tencent://message/?uin=572839485&Site=在线咨询&Menu=yes //http://wpa.qq.com/msgrd?v=3&uin=572839485&site=qq&menu=yes ViewButton btn33 = new ViewButton(); btn33.setName("在线咨询"); btn33.setType("view"); btn33.setUrl("http://wpa.qq.com/msgrd?v=3&uin=572839485&site=qq&menu=yes"); ViewButton btn34 = new ViewButton(); btn34.setName("我的博客"); btn34.setType("view"); btn34.setUrl("http://www.cnblogs.com/zyw-205520"); ClickButton btn35 = new ClickButton(); btn35.setName("点击事件"); btn35.setType("click"); btn35.setKey("rselfmenu_3_5"); ComButton mainBtn1 = new ComButton(); mainBtn1.setName("发图"); mainBtn1.setSub_button(new Button[] { btn11, btn12, btn13}); ComButton mainBtn2 = new ComButton(); mainBtn2.setName("扫码"); mainBtn2.setSub_button(new Button[] { btn21, btn22 ,btn23}); ComButton mainBtn3 = new ComButton(); mainBtn3.setName("个人中心"); mainBtn3.setSub_button(new Button[] { btn31, btn32, btn33, btn34 ,btn35 }); /** * 这是公众号xiaoqrobot目前的菜单结构,每个一级菜单都有二级菜单项<br> * * 在某个一级菜单下没有二级菜单的情况,menu该如何定义呢?<br> * 比如,第三个一级菜单项不是“更多体验”,而直接是“幽默笑话”,那么menu应该这样定义:<br> * menu.setButton(new Button[] { mainBtn1, mainBtn2, btn33 }); */ Menu menu = new Menu(); menu.setButton(new Button[] { mainBtn1, mainBtn2, mainBtn3 }); return menu; }
기본 메서드는 생성된 메뉴의 JSON과 응답 상태
生成菜单的JSON:{"button":[{"sub_button":[{"name":"微信相册发图","type":"pic_weixin","key":"rselfmenu_1_1"},{"name":"拍照或者相册发图","type":"pic_photo_or_album","key":"rselfmenu_1_2"},{"name":"系统拍照发图","type":"pic_sysphoto","key":"rselfmenu_1_3"}],"name":"发图","type":null},{"sub_button":[{"name":"扫码带提示","type":"scancode_waitmsg","key":"rselfmenu_2_1"},{"name":"扫码推事件","type":"scancode_push","key":"rselfmenu_2_2"},{"name":"我的设备","type":"view","url":"https://hw.weixin.qq.com/devicectrl/panel/device-list.html?appid=wx614c453e0d1dcd12"}],"name":"扫码","type":null},{"sub_button":[{"name":"微社区","type":"view","url":"http://whsf.tunnel.mobi/whsf/msg/wsq"},{"name":"发送位置","type":"location_select","key":"rselfmenu_3_2"},{"name":"在线咨询","type":"view","url":"http://wpa.qq.com/msgrd?v=3&uin=572839485&site=qq&menu=yes"},{"name":"我的博客","type":"view","url":"http://www.cnblogs.com/zyw-205520"},{"name":"点击事件","type":"click","key":"rselfmenu_3_5"}],"name":"个人中心","type":null}],"matchrule":null} 响应的状态: {"errcode":0,"errmsg":"ok"}
String jsonMenu = JsonKit.toJson(getTestMenu()).toString();
[관련 추천]
3. WeChat People Network v3.4.5 고급 비즈니스 버전 WeChat 루빅스 큐브 소스 코드
위 내용은 WeChat 공개 계정을 위한 맞춤형 메뉴 개발에 대한 예제 튜토리얼 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!