5.4 响应菜单点击事件
菜单创建完成后,就能在微信客户端上看到效果了,此时点击view类型的菜单按钮会自动使用微信内置的浏览器访问URL,而点击click类型的菜单按钮不会有任何反应,这又是为什么呢?当用户点击click类型的菜单按钮时,微信服务器会向公众账号后台推送一条消息类型为event,事件类型为CLICK的事件消息。我们需要在公众账号后台接收该事件消息,并做出响应。
以上一节创建的菜单为例,相应的菜单点击事件处理代码如下:
- 1 // 判断消息类型
- 2 if (msgType.equals("event")) {
- 3 // 事件类型
- 4 String eventType = requestMap.get("Event");
- 5 // 自定义菜单点击事件
- 6 if (eventType.equals("CLICK ")) {
- 7 // 事件KEY值,与创建菜单时的key值对应
- 8 String eventKey = requestMap.get("EventKey");
- 9 // 根据key值判断用户点击的按钮
- 10 if (eventKey.equals("V1001_TODAY_MUSIC")) {
- 11 respContent = "用户点击了"今日歌曲"按钮";
- 12 } else if (eventKey.equals("V1001_HELLO_WORLD")) {
- 13 respContent = "用户点击了"hello word"按钮";
- 14 } else if (eventKey.equals("V1001_GOOD")) {
- 15 respContent = "用户点击了"赞一下我们"按钮";
- 16 }
- 17 }
- 18 // TODO 其他操作……
- 19 }
- 20 // TODO 其他操作……
代码中的第2行、第6行说明了判断菜单点击事件的两个条件(消息类型为event,并且事件类型为CLICK),第8行是获取被点击菜单按钮的key值,10~16行代码是根据key值判断用户点击的是哪个菜单按钮并做出相应的回复。