LaneWeChat

PHP微信开发框架,高效开发微信公众号应用。简洁而又轻量

GitHub下载 查看手册

自定义菜单

Visits: 21464 Date: 2014-08-20 17:30:08 Power By 李轩Lane

    

1、类简介:添加自定义菜单。最多可以有三个一级菜单,每个一级菜单最多可以有五个菜单。一级菜单最多4个汉字,二级菜单最多7个汉字。创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来。建议测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。


        警告:设置菜单Menu::setMenu($menuList)参数结构和返回值重写,自1.4版本起不向下兼容。


        注意:所有新增的菜单类型(除了click类型和view类型),仅支持微信iPhone5.4.1以上版本,和Android5.4以上版本的微信用户,旧版本微信用户点击后将没有回应,开发者也不能正常接收到事件推送。


        摘自微信官方网站:目前自定义菜单接口可实现两种类型按钮,如下:


            click:

                用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event的结构给开发者,并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值与用户进行交互;


            view:

                用户点击view类型按钮后,微信客户端将会打开开发者在按钮中填写的url值(即网页链接),达到打开网页的目的,建议与网页授权获取用户基本信息接口结合,获得用户的登入个人信息。


            总结一下哦,就是微信的菜单分两种,一种是view型,就是你设置一个网址,点了这个菜单之后就跳到你设置的网址去了。另一种就是click型,你设置一个key,然后用户点击的时候会通过本框架唯一入口wechat.php发送一个消息类型为event的请求,在wechatrequest.lib.php文件下的eventClick方法中可以使用。


            1、新增“scancode_push:扫码推事件”类型菜单

                用户点击按钮后,微信客户端将调起扫一扫工具,完成扫码操作后显示扫描结果(如果是URL,将进入URL),且会将扫码的结果传给开发者,开发者可以下发消息。


            2、新增“scancode_waitmsg:扫码推事件且弹出‘消息接收中’提示框”类型菜单

                用户点击按钮后,微信客户端将调起扫一扫工具,完成扫码操作后,将扫码的结果传给开发者,同时收起扫一扫工具,然后弹出“消息接收中”提示框,随后可能会收到开发者下发的消息。


            3、新增“pic_sysphoto:弹出系统拍照发图”类型菜单

                用户点击按钮后,微信客户端将调起系统相机,完成拍照操作后,会将拍摄的相片发送给开发者,并推送事件给开发者,同时收起系统相机,随后可能会收到开发者下发的消息。


            4、新增“pic_photo_or_album:弹出拍照或者相册发图”类型菜单

                用户点击按钮后,微信客户端将弹出选择器供用户选择“拍照”或者“从手机相册选择”。用户选择后即走其他两种流程。


            5、新增“pic_weixin:弹出微信相册发图器”类型菜单

                用户点击按钮后,微信客户端将调起微信相册,完成选择操作后,将选择的相片发送给开发者的服务器,并推送事件给开发者,同时收起相册,随后可能会收到开发者下发的消息。


            6、新增“location_select:弹出地理位置选择器”类型菜单

                用户点击按钮后,微信客户端将调起地理位置选择工具,完成选择操作后,将选择的地理位置发送给开发者的服务器,同时收起位置选择工具,随后可能会收到开发者下发的消息。


            7、新增了以上6种菜单类型、view(点击跳转链接)的菜单类型的被动响应的支持。默认讲点击菜单的事件推送数据发送文本消息返回给用户。开发者请自行修改。


        2、使用命名空间:use LaneWeChat\Core\Menu;


        3、设置菜单:是所有的菜单数据全部发送一次,可不是每新增一个只发一个菜单。

            Menu::setMenu($menuList);

            $menuLis 是菜单列表,结构如下:

            $menuList = array(

                array('id'=>'1', 'pid'=>'0', 'name'=>'顶级分类一', 'type'=>'', 'code'=>''),

                array('id'=>'2', 'pid'=>'1', 'name'=>'分类一子分类一', 'type'=>'click', 'code'=>'lane_wechat_menu_1_1'),

                array('id'=>'3', 'pid'=>'1', 'name'=>'分类一子分类二', 'type'=>'1', 'code'=>'http://www.lanecn.com'),

                array('id'=>'4', 'pid'=>'0', 'name'=>'顶级分类二', 'type'=>'1', 'code'=>'http://www.php.net/'),

                array('id'=>'5', 'pid'=>'0', 'name'=>'顶级分类三', 'type'=>'2', 'code'=>'lane_wechat_menu_3'),

            );

            'id'是您的系统中对分类的唯一编号;

            'pid'是该分类的上级分类,顶级分类则填写0;

            'name'是分类名称;

            'type'是菜单类型,如果该分类下有子分类请务必留空;

                'type'的值从以下类型中选择:click、view、scancode_push、scancode_waitmsg、pic_sysphoto、pic_photo_or_album、pic_weixin、location_select。

            'code'是view类型的URL或者其他类型的自定义key,如果该分类下有子分类请务必留空。


        4、获取微信菜单:获取到的是已经设置过的菜单列表,格式为Json,是微信服务器返回的原始数据。

            Menu::getMenu();


        5、删除微信菜单:将会删除设置过的所有菜单(一键清空)。

            Menu::delMenu();


Reply: xiong On 2015-05-17 21:22:47

eventView方法无效,eventClick正常

回复

Reply: Lane On 2015-06-16 10:09:52

View是填写url。点击跳转的。实例:http://lanewechat.lanecn.com/doc/main/aid-25

回复

Reply: 李道元 On 2016-02-27 11:01:09

我设置菜单,设置了一个url地址,能够跳转过去,但是 点击菜单跳转链接时的事件推送,一直进不去呢,还望楼主不吝赐教!

回复

Reply: bbs On 2015-06-07 21:40:41

请问一下,如何在微信上面显示菜单?我在项目目录下建立一个index.php文件,代码如下: include 'wechatapi/lanewechat.php'; $menuList = array( array('id'=>'1', 'pid'=>'0', 'name'=>'菜单1', 'type'=>'', 'code'=>''), array('id'=>'2', 'pid'=>'0', 'name'=>'菜单2', 'type'=>'', 'code'=>''), ); $result = \LaneWeChat\Core\Menu::setMenu($menuList); echo $result; 为什么微信上面不显示菜单呢?好像执行不到我这个index.php文件一样。

回复

Reply: Lane On 2015-06-16 10:35:57

你要手动去执行啊。微信肯定不会主动过来跑你这个文件

回复

Reply: arvinzhao On 2015-06-15 17:31:27

怎么自定义菜单啊,,是在唯一入口文件中调用menu类吗,,config为何要有一个include

回复

Reply: Lane On 2015-06-16 10:34:38

你把http://lanewechat.lanecn.com/doc/main/aid-25这里面代码复制过去,试试就明白了

回复

Reply: luis On 2015-09-23 15:25:21

是不是把创建菜单写在唯一的入口文件中啊?

回复

Reply: aaron On 2015-09-19 23:05:38

hi,我想问下点击自定义菜单回复文本消息和图文消息分别怎么写,我不太懂,麻烦赐教

回复

Reply: jianhua On 2015-11-06 16:59:49

菜单里面写中文的话微信接口会报错,如果将所有中文换成原文的话,工作正常。 下面是仅仅显示一个中文的报错,发现是"常规" 最后post的时候没有变成 %34%78之类。 是我这边的配置问题么? 谢谢指导。 string(612) "{"button":[{"name":"常规","sub_button":[{"name":"BB","type":"click","key":"key_2"},{"name":"CC","type":"view","url":"http://www.lanecn.com"},{"name":"MM","type":"location_select","key":"key_11","sub_button":[]}]},{"name":"DD","sub_button":[{"name":"EE","type":"scancode_waitmsg","key":"key_5","sub_button":[]},{"name":"FF","type":"scancode_push","key":"key_6","sub_button":[]}]},{"name":"GG","sub_button":[{"name":"HH","type":"pic_sysphoto","key":"key_8","sub_button":[]},{"name":"JJ","type":"pic_photo_or_album","key":"key_9","sub_button":[]},{"name":"KK","type":"pic_weixin","key":"key_10","sub_button":[]}]}]}" ---------------------- array(2) { ["errcode"]=> int(-1) ["errmsg"]=> string(35) "system error hint: [8KIxia0143vr19]" }

回复

Reply: 10号仔 On 2016-08-19 10:13:57

array(2) { ["errcode"] => int(40001) ["errmsg"] => string(76) "invalid credential, access_token is invalid or not latest hint: [L60876rsz5]" } 有时会这样?

回复

Reply: lixuan On 2016-10-11 18:36:27

Comment Comment

回复

Reply: ekupaarjase On 2020-01-10 07:20:30

http://mewkid.net/who-is-xandra/ - Buy Amoxicillin <a href="http://mewkid.net/who-is-xandra/">Amoxicillin 500 Mg</a> mju.sqab.lanewechat.lanecn.com.nyu.bp http://mewkid.net/who-is-xandra/

回复

Reply: ipinuofeogom On 2020-01-10 07:30:26

http://mewkid.net/who-is-xandra/ - Amoxil <a href="http://mewkid.net/who-is-xandra/">Amoxicillin 500 Mg</a> nym.yfao.lanewechat.lanecn.com.gvv.dk http://mewkid.net/who-is-xandra/

回复

Reply: uhovewedolze On 2020-01-10 17:22:53

http://mewkid.net/who-is-xandra/ - Amoxicillin 500mg <a href="http://mewkid.net/who-is-xandra/">Amoxicillin 500 Mg</a> vuc.ntfu.lanewechat.lanecn.com.rvq.gd http://mewkid.net/who-is-xandra/

回复

Reply: edubaxiku On 2020-01-10 17:33:07

http://mewkid.net/who-is-xandra/ - Amoxicillin No Prescription <a href="http://mewkid.net/who-is-xandra/">Buy Amoxil</a> sjd.wdvc.lanewechat.lanecn.com.mic.ay http://mewkid.net/who-is-xandra/

回复

Reply: MarkSobby On 2020-03-10 12:35:09

Clomid 3 Comprimes http://apcialisle.com/# - canadian pharmacy cialis Cialis Vente En France <a href=http://apcialisle.com/#>Cialis</a> Cialis 200 Mg India

回复

Reply: MarkSobby On 2020-03-19 18:54:19

Precio De Cialis En Farmacias Espanolas https://apcialisle.com/# - Cialis Drug Interaction Between Keflex And Osmotics <a href=https://apcialisle.com/#>cialis no prescription</a> Levitra Acquistare Impotenza

回复

Reply: MocFew On 2020-05-01 23:37:23

Viagra All'Estero <a href=https://abuycialisb.com/#>Cialis</a> Best Price Viagra 100mg Costco <a href=https://abuycialisb.com/#>Buy Cialis</a> Amitriptyline Were To Buy

回复

Reply: Finlay On 2020-05-10 02:19:24

Does your site have a contact page? I'm having problems locating it but, I'd like to shoot you an email. I've got some recommendations for your blog you might be interested in hearing. Either way, great website and I look forward to seeing it grow over time.

回复

Add Comment
©2014 lanewechat.lanecn.com , All rights reserved. Power By LaneWeChat 微信PHP开发框架.  京ICP备14005030号