微信公众平台开发教程Java版(六) 事件处理(菜单点击/关注/取消关注)
2014-10-29 17:25
393 查看
前言:
事件处理是非常重要的,这一章讲讲常见的事件处理
1、关注/取消关注
2、菜单点击
事件类型介绍:
在微信中有事件请求是消息请求中的一种。请求类型为:event
而event事件类型又分多种事件类型,具体分
关注:subscribe
取消关注:unsubscribe
自定义菜单点击:CLICK
根据上面的类型分类可建对应的常量
再在CoreServiceImpl中处理对应事件类型,先上CoreServiceImpl的源码
从第108行开始做事件处理,根据请求的事件类型,做出相应的反应。
菜单点击事件:
单独把菜单点击事件拉出来详细说说
用户点击自定义菜单后,如果菜单按钮设置为click类型,则微信会把此次点击事件推送给开发者,注意view类型(跳转到URL)的菜单点击不会上报。
参数说明:
要注意的是 EventKey 这个参数,与菜单创建的时候中的key值是对应的。
写出来的效果图为:依次触发的事件是
关注,点击天气预报菜单,点击公交查询菜单
事件处理讲到这里就结束了,
大家可加我的微信公众号一起讨论
微信公众号:andedaohang
或扫描二维码
转载请注明出处:/article/3616551.html
大小: 38.1 KB
大小: 127.3 KB
查看图片附件
事件处理是非常重要的,这一章讲讲常见的事件处理
1、关注/取消关注
2、菜单点击
事件类型介绍:
在微信中有事件请求是消息请求中的一种。请求类型为:event
而event事件类型又分多种事件类型,具体分
关注:subscribe
取消关注:unsubscribe
自定义菜单点击:CLICK
根据上面的类型分类可建对应的常量
/** * 请求消息类型:事件 */ public static final String REQ_MESSAGE_TYPE_EVENT = "event"; /** * 事件类型:subscribe(关注) */ public static final String EVENT_TYPE_SUBSCRIBE = "subscribe"; /** * 事件类型:unsubscribe(取消关注) */ public static final String EVENT_TYPE_UNSUBSCRIBE = "unsubscribe"; /** * 事件类型:CLICK(自定义菜单点击事件) */ public static final String EVENT_TYPE_CLICK = "CLICK";
再在CoreServiceImpl中处理对应事件类型,先上CoreServiceImpl的源码
package com.ifp.weixin.biz.core.impl; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.log4j.Logger; import org.springframework.stereotype.Service; import com.ifp.weixin.biz.core.CoreService; import com.ifp.weixin.constant.Constant; import com.ifp.weixin.entity.Message.resp.Article; import com.ifp.weixin.entity.Message.resp.NewsMessage; import com.ifp.weixin.entity.Message.resp.TextMessage; import com.ifp.weixin.util.MessageUtil; @Service("coreService") public class CoreServiceImpl implements CoreService { public static Logger log = Logger.getLogger(CoreServiceImpl.class); @Override public String processRequest(HttpServletRequest request) { String respMessage = null; try { // xml请求解析 Map<String, String> requestMap = MessageUtil.parseXml(request); // 发送方帐号(open_id) String fromUserName = requestMap.get("FromUserName"); // 公众帐号 String toUserName = requestMap.get("ToUserName"); // 消息类型 String msgType = requestMap.get("MsgType"); TextMessage textMessage = new TextMessage(); textMessage.setToUserName(fromUserName); textMessage.setFromUserName(toUserName); textMessage.setCreateTime(new Date().getTime()); textMessage.setMsgType(Constant.RESP_MESSAGE_TYPE_TEXT); textMessage.setFuncFlag(0); String respContent = ""; // 文本消息 if (msgType.equals(Constant.REQ_MESSAGE_TYPE_TEXT)) { // 接收用户发送的文本消息内容 String content = requestMap.get("Content"); // 创建图文消息 NewsMessage newsMessage = new NewsMessage(); newsMessage.setToUserName(fromUserName); newsMessage.setFromUserName(toUserName); newsMessage.setCreateTime(new Date().getTime()); newsMessage.setMsgType(Constant.RESP_MESSAGE_TYPE_NEWS); newsMessage.setFuncFlag(0); List<Article> articleList = new ArrayList<Article>(); // 单图文消息 if ("1".equals(content)) { Article article = new Article(); article.setTitle("我是一条单图文消息"); article.setDescription("我是描述信息,哈哈哈哈哈哈哈。。。"); article.setPicUrl("http://www.iteye.com/upload/logo/user/603624/2dc5ec35-073c-35e7-9b88-274d6b39d560.jpg"); article.setUrl("http://tuposky.iteye.com"); articleList.add(article); // 设置图文消息个数 newsMessage.setArticleCount(articleList.size()); // 设置图文消息包含的图文集合 newsMessage.setArticles(articleList); // 将图文消息对象转换成xml字符串 respMessage = MessageUtil.newsMessageToXml(newsMessage); } // 多图文消息 else if ("3".equals(content)) { Article article1 = new Article(); article1.setTitle("我是一条多图文消息"); article1.setDescription(""); article1.setPicUrl("http://www.isic.cn/viewResourcesAction//logo/20130913/2013091314543416032.jpg"); article1.setUrl("http://tuposky.iteye.com/blog/2008583"); Article article2 = new Article(); article2.setTitle("微信公众平台开发教程Java版(二)接口配置 "); article2.setDescription(""); article2.setPicUrl("http://www.isic.cn/viewResourcesAction//logo/20131021/2013102111243367254.jpg"); article2.setUrl("http://tuposky.iteye.com/blog/2008655"); Article article3 = new Article(); article3.setTitle("微信公众平台开发教程Java版(三) 消息接收和发送"); article3.setDescription(""); article3.setPicUrl("http://www.isic.cn/viewResourcesAction//logo/20131021/2013102111291287031.jpg"); article3.setUrl("http://tuposky.iteye.com/blog/2017429"); articleList.add(article1); articleList.add(article2); articleList.add(article3); newsMessage.setArticleCount(articleList.size()); newsMessage.setArticles(articleList); respMessage = MessageUtil.newsMessageToXml(newsMessage); } //事件处理开始 } else if (msgType.equals(Constant.REQ_MESSAGE_TYPE_EVENT)) { // 事件类型 String eventType = requestMap.get("Event"); if (eventType.equals(Constant.EVENT_TYPE_SUBSCRIBE)) { // 关注 respContent = "感谢您关注偶,这里会给您提供最新的公司资讯和公告!\n"; StringBuffer contentMsg = new StringBuffer(); contentMsg.append("您还可以回复下列数字,体验相应服务").append("\n\n"); contentMsg.append("1 我就是个测试的").append("\n"); contentMsg.append("2 我木有").append("\n"); contentMsg.append("3 我是多图文").append("\n"); respContent = respContent+contentMsg.toString(); } else if (eventType.equals(Constant.EVENT_TYPE_UNSUBSCRIBE)) { // 取消关注,用户接受不到我们发送的消息了,可以在这里记录用户取消关注的日志信息 } else if (eventType.equals(Constant.EVENT_TYPE_CLICK)) { // 事件KEY值,与创建自定义菜单时指定的KEY值对应 String eventKey = requestMap.get("EventKey"); // 自定义菜单点击事件 if (eventKey.equals("11")) { respContent = "天气预报菜单项被点击!"; } else if (eventKey.equals("12")) { respContent = "公交查询菜单项被点击!"; } } textMessage.setContent(respContent); respMessage = MessageUtil.textMessageToXml(textMessage); } } catch (Exception e) { e.printStackTrace(); } return respMessage; } }
从第108行开始做事件处理,根据请求的事件类型,做出相应的反应。
菜单点击事件:
单独把菜单点击事件拉出来详细说说
用户点击自定义菜单后,如果菜单按钮设置为click类型,则微信会把此次点击事件推送给开发者,注意view类型(跳转到URL)的菜单点击不会上报。
参数说明:
要注意的是 EventKey 这个参数,与菜单创建的时候中的key值是对应的。
写出来的效果图为:依次触发的事件是
关注,点击天气预报菜单,点击公交查询菜单
事件处理讲到这里就结束了,
大家可加我的微信公众号一起讨论
微信公众号:andedaohang
或扫描二维码
转载请注明出处:/article/3616551.html
大小: 38.1 KB
大小: 127.3 KB
查看图片附件
相关文章推荐
- 微信公众平台开发关注及取消关注事件的方法
- 微信公众帐号自定义菜单创建及事件响应开发教程 附java源代码
- 微信公众平台开发教程Java版(五) 自定义菜单创建
- 微信公众号取消关注事件要做的处理,php开发公众号
- 微信公众帐号开发教程第14篇-自定义菜单的创建及菜单事件响应 (Java版)
- Android游戏开发系列教程第三讲(事件处理)
- 微信公众帐号开发教程第14篇-自定义菜单的创建及菜单事件响应 (14)
- 微信公众平台开发模式,成为开发者,实现自动回复和用户的关注事件的监听
- 事件处理程序,(在页面上点击右键隐藏选择菜单)
- 微信公众帐号开发教程第14篇-自定义菜单的创建及菜单事件响应
- [038] 微信公众帐号开发教程第14篇-自定义菜单的创建及菜单事件响应 .
- 新的微信公众平台开发接口-subscribe事件的处理
- 微信公众平台开发(三) 订阅事件(subscribe)处理
- 移动项目开发笔记(禁止一个按钮在服务器事件处理完成前连续点击按钮)
- 事件处理程序,(在页面上点击右键隐藏选择菜单)
- [038] 微信公众帐号开发教程第14篇-自定义菜单的创建及菜单事件响应
- 微信公众平台开发[4]-开发模式-关注、取消关注
- 微信公众帐号开发教程第14篇-自定义菜单的创建及菜单事件响应