菜单的事件推送
这一节我们来看菜单的事件推送。当我们点击一个菜单的时候,它会触发相应的事件,并且微信后台会返回该事件对应的一些参数,那么我们开发者就可以根据这些参数进行业务逻辑的处理,这就是菜单的事件推送。这八种自定义菜单事件推送分别对应着我们上节课所讲的八种类型的菜单。
第一种是Click菜单的事件推送。数据结构如下:
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[FromUser]]></FromUserName> <CreateTime>123456789</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[CLICK]]></Event> <EventKey><![CDATA[EVENTKEY]]></EventKey> </xml>
前面四个ToUserName-MsgType不说了,都是每个微信后台返回结果必须带的几个参数。Event是事件类型,也就是前面我们八种类型菜单的类型,就是我们设置那个Type的值。EventKey是我们创建菜单的时候设置的Key的值。如果是View类型的菜单,那么这个EventKey的值就是View类型菜单的url的值。
剩下的七种事件推送就不说了,因为它们的数据格式和参数都是差不多的,大家可以看一下开发文档就很容易明白。开发文档上面的弹出地理位置选择器的事件推送的数据格式和参数是有问题的。
<xml><ToUserName><![CDATA[gh_e136c6e50636]]></ToUserName> <FromUserName><![CDATA[oMgHVjngRipVsoxg6TuX3vz6glDg]]></FromUserName> <CreateTime>1408091189</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[location_select]]></Event> <EventKey><![CDATA[6]]></EventKey> <SendLocationInfo><Location_X><![CDATA[23]]></Location_X> <Location_Y><![CDATA[113]]></Location_Y> <Scale><![CDATA[15]]></Scale> <Label><![CDATA[ 广州市海珠区客村艺苑路 106号]]></Label> <Poiname><![CDATA[]]></Poiname> </SendLocationInfo> </xml>
参数说明:
参数 | 描述 |
---|---|
ToUserName | 开发者微信号 |
FromUserName | 发送方帐号(一个OpenID) |
CreateTime | 消息创建时间 (整型) |
MsgType | 消息类型,event |
Event | 事件类型,location_select |
EventKey | 事件KEY值,由开发者在创建菜单时设定 |
SendLocationInfo | 发送的位置信息 |
Location_X | X坐标信息 |
Location_Y | Y坐标信息 |
Scale | 精度,可理解为精度或者比例尺、越精细的话 scale越高 |
Label | 地理位置的字符串信息 |
Poiname | 朋友圈POI的名字,可能为空 |
参数列表中Event的值可能有一些错误,到时候在开发模式下我们直接从Map里面获取就知道了
可以测试一下微信后台会不会回复MESSAGE_VIEW和MESSAGE_SCANCODE这两个类型的事件。先做一下这个回复地理位置事件。因为在开发文档里面这个获取地理位置事件是有问题的,所以我们直接在本地做一个调试,直接在Map里面获取一下它有哪些属性。直接在微信后台回复一条地理位置信息。
在Map那里打断点
这个Eclipse不集成百度云插件是无法完成这件事情的。