美文网首页
JFinal Weixin 学习笔记(8)-- 微信自定义菜单

JFinal Weixin 学习笔记(8)-- 微信自定义菜单

作者: NanCarp | 来源:发表于2017-05-23 11:05 被阅读0次

自定义菜单接口

/**
 * 查询菜单
 */
MenuApi.getMenu();

/**
 * 创建菜单
 */
MenuApi.createMenu(String jsonStr);

/**
 * 自定义菜单删除接口
 */
MenuApi.deleteMenu();

WeinxinApiController.java

createMenu(String jsonStr) 接受 json 格式的字符串,我们根据微信技术文档拼接自定义菜单字符串:

/**
 * 创建菜单
 */
public void createMenu() {
    String path = Constants.HOST;
    String jsonstr = "{" +
            "   \"button\": [" +
            "       {" +
            "           \"name\": \"一级菜单1\"," +
            "           \"sub_button\": [" +
            "               {\"name\": \"二级菜单11\",\"type\": \"view\",\"url\": \"" + path + "/api\"}," +
            "               {\"name\": \"二级菜单12\",\"type\": \"view\",\"url\": \"" + path + "/api\"}," +
            "               {\"name\": \"二级菜单13\",\"type\": \"view\",\"url\": \"" + path + "/api\"}," +
            "               {\"name\": \"二级菜单14\",\"type\": \"view\",\"url\": \"" + path + "/api\"}," +
            "               {\"name\": \"二级菜单15\",\"type\": \"view\",\"url\": \"" + path + "/api\"}]" +
            "       }," +
            "       {" +
            "           \"name\": \"一级菜单2\"," +
            "           \"sub_button\": [" +
            "               {\"name\": \"测  试\",\"type\": \"view\",\"url\": \"" + path + "/api/index\"}," +
            "               {\"name\": \"click\",\"type\": \"click\",\"key\": \"22\"}," +
            "               {\"name\": \"二级菜单23\",\"type\": \"view\",\"url\": \"" + path + "/api\"}," +
            "               {\"name\": \"百度\",\"type\": \"view\",\"url\": \"http://www.baidu.com\"}," +
            "               {\"name\": \"二级菜单25\",\"type\": \"view\",\"url\": \"" + path + "/api\"}]" +
            "       }," +
            "       {" +
            "           \"name\": \"一级菜单3\"," +
            "           \"sub_button\": ["+
            "               {\"name\": \"二级菜单31\",\"type\": \"view\",\"url\": \"" + path + "/api\"}," +
            "               {\"name\": \"二级菜单32\",\"type\": \"view\",\"url\": \"" + path + "/api\"}," +
            "               {\"name\": \"二级菜单33\",\"type\": \"view\",\"url\": \"" + path + "/api\"}," +
            "               {\"name\": \"二级菜单34\",\"type\": \"view\",\"url\": \"" + path + "/api\"}," +
            "               {\"name\": \"二级菜单35\",\"type\": \"view\",\"url\": \"" + path + "/api\"}]" +
            "       }" +
            "   ]" +
            "}";
    ApiResult apiResult = MenuApi.createMenu(jsonstr);
    renderText(apiResult.getJson());
}

自定义菜单接口可实现多种类型按钮,详见:微信公众平台技术文档
这里使用了两种:
1、click:点击推事件用户点击 click 类型按钮后,微信服务器会通过消息接口推送消息类型为 event 的结构给开发者(参考消息接口指南),并且带上按钮中开发者填写的 key 值,开发者可以通过自定义的 key 值与用户进行交互;
2、view:跳转 URL 用户点击 view 类型按钮后,微信客户端将会打开开发者在按钮中填写的网页 URL,可与网页授权获取用户基本信息接口结合,获得用户基本信息。

getMenu() 方法,查询自定义菜单:

/**
 * 查询菜单
 */
public void getMenu() {
    ApiResult apiResult = MenuApi.getMenu();
    renderText(apiResult.getJson());
}

WeixinMsgController.java

processInMenuEvent(InMenuEvent inMenuEvent) 方法接受菜单中 click 类型按钮的点击事件

// 自定义菜单事件
@Override
protected void processInMenuEvent(InMenuEvent inMenuEvent) {
    OutTextMsg outMsg = new OutTextMsg(inMenuEvent);
    outMsg.setContent("processInMenuEvent() 方法测试成功");
    render(outMsg);
}

index.html

<h3>自定义菜单</h3>
点击<a href='/api/createMenu'>【创建自定义菜单】</a><br>
点击<a href='/api/getMenu'>【获取自定义菜单】</a><br>

运行

点击创建菜单,微信客户端不会立马刷新。想立马看到效果,可以取消关注再关注。
微信菜单:


一级菜单 二级菜单 三级菜单

点击 click22

Paste_Image.png

新增了“测试”按钮,可以直接跳转主页面:

测试页面

点击“获取自定义菜单”
得到 json 格式的菜单数据:

菜单数据

源码地址
JFinal Weixin 学习笔记(9)-- 微信账号二维码
JFinal Weixin 学习笔记(1)-- 目录

参考文章

微信公众号开发之自定义菜单
jfinal-weixin-wiki 自定义菜单接口

相关文章

网友评论

      本文标题:JFinal Weixin 学习笔记(8)-- 微信自定义菜单

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