精华内容
下载资源
问答
  • 个性化菜单

    2014-09-09 23:01:02
    个性化菜单
  • VB打造超酷个性化菜单用VB制作多种风格的菜单,比如3D立体风格、渐变风格、多彩风格等等。
  • 原因:在调用微信的创建个性化菜单的接口时,是每次都会重新创建一个,而不是覆盖原先的菜单,创建接口如下 https://api.weixin.qq.com/cgi-bin/menu/addconditional?access_token=ACCESS_TOKEN 所以应该在重新创建...

    原因:在调用微信的创建个性化菜单的接口时,是每次都会重新创建一个,而不是覆盖原先的菜单,创建接口如下

    https://api.weixin.qq.com/cgi-bin/menu/addconditional?access_token=ACCESS_TOKEN

    所以应该在重新创建前将原先个性化菜单进行删除

    1,通过获取自定义菜单查询接口,获取菜单数据如下:

      接口

    https://api.weixin.qq.com/cgi-bin/menu/get?access_token=ACCESS_TOKEN
    {
    	"menu": {
    		"button": [{
    			"name": "xxxxx",
    			"sub_button": [{
    				"type": "view",
    				"name": "号内搜索",
    				"url": "xxxxx",
    				"sub_button": []
    			}]
    		}],
    		"menuid": 449129811
    	},
    	"conditionalmenu": [{ #这获取的是个性化菜单的菜单数据
    		"button": [{
    			"name": "个人中心",
    			"sub_button": [{
    				"type": "view",
    				"name": "我的中心",
    				"url": "xxxxxx",
    				"sub_button": []
    			}]
    		}],
    		"matchrule": {
    			"group_id": "156" #这个是在创建个性化菜单时传的tag_id
    		},
    		"menuid": 449127404
    	}]
    }

    将获得的个性化菜单根据要重新创建的个性化菜单tag_id 和group_id 进行匹配,匹配上的话就拿 menuid 调如下接口进行删除

    import requests
    token='xxxxxxx'
    url='https://api.weixin.qq.com/cgi-bin/menu/delconditional?access_token=%s'%token
    a=requests.post(url,json={"menuid":"445615761"})
    print a.content

    删除成功后再调取创建接口进行创建

    https://api.weixin.qq.com/cgi-bin/menu/addconditional?access_token=ACCESS_TOKEN

    微信文档地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1455782296 

    展开全文
  • 23.2.3 定制个性化菜单.mp4
  • 微信公众号的个性化菜单-用户标签
  • VB打造超酷个性化菜单 VB打造超酷个性化菜单
  • 定制个性化菜单

    2019-06-28 12:39:06
    定制个性化菜单定制个性化菜单 =========================================================== 大的系统其实都是耦合在一起,以根据自己的业务需求进行DIY,这样就能得到更贴切...
    定制个性化菜单
    定制个性化菜单
    ===========================================================
    大的系统其实都是耦合在一起,以根据自己的业务需求进行DIY,这样就能得到更贴切的服务。
    这里讲讲个性化定制菜单,总体有三步:
    1,定义子菜单,功能。当然很多系统已经设置好了。
    2,设置菜单;
    3,设置责任;
    4,分配给用户;
    现在具体解释一下:
    1,以sysadmin身份(拥有system administartor模块)登陆并打开该模块,定义相应的菜单,功能(菜单下包含功能,即一个菜单可以包含多个功能)。一般的form都被定义为功能。如采购订单;
    2,却换到应用---〉菜单,输入你想添加的菜单名称,用户菜单名(这个要显示出来的)。在下面的form提示里输入要添加的菜单名称如:我想设置一个查询PO的功能,如果这个功能是包含在某个大菜单里的小功能,这个地方要选择大的菜单,如:采购订单(在上一步设置的),然后再功能中选择具体的功能,如:采购订单汇总;...
    到这里已快大功告成了
    3,这一步主要功能是使之成为一个模块。依序打开安全性---〉责任---〉定义。这里需要注意的应用,数据组和菜单。应用和数据组里应用的设置是一致的,意思是这个模块式输入那个模块的,如打印PO属于Oracle Purchasing。 数据组名称我们大多选择标准,菜单就是把和我们第二步设置的菜单关联起来。保存。
    4,这一步就是分配采购了。如果给某人拥有打印PO的权限,把这个模块添加给他。

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/133041/viewspace-438540/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/133041/viewspace-438540/

    展开全文
  • 微信公众号开发(五)个性化菜单

    万次阅读 2017-09-07 00:16:41
    微信公众号开发(五)个性化菜单 个性化菜单让公众号的不同用户群体看到不一样的自定义菜单。该接口开放给已认证订阅号和已认证服务号,个性化菜单要求用户的微信客户端版本在iPhone6.2.2,Android 6.2.4以上,...

    微信公众号开发(五)个性化菜单

     

    个性化菜单让公众号的不同用户群体看到不一样的自定义菜单。该接口开放给已认证订阅号和已认证服务号,个性化菜单要求用户的微信客户端版本在iPhone6.2.2,Android 6.2.4以上,暂时不支持其他版本微信,另外定义个性化菜单之前必须先定义默认菜单。

    开发者可以通过以下条件来设置用户看到的菜单:

    1. 用户标签(开发者的业务需求可以借助用户标签来完成)
    2. 性别
    3. 手机操作系统
    4. 地区(用户在微信客户端设置的地区)
    5. 语言(用户在微信客户端设置的语言)

    个性化菜单匹配规则说明:

    个性化菜单的更新是会被覆盖的。
    例如公众号先后发布了默认菜单,个性化菜单1,个性化菜单2,个性化菜单3。那么当用户进入公众号页面时,将从个性化菜单3开始匹配,如果个性化菜单3匹配成功,则直接返回个性化菜单3,否则继续尝试匹配个性化菜单2,直到成功匹配到一个菜单。
    根据上述匹配规则,为了避免菜单生效时间的混淆,决定不予提供个性化菜单编辑API,开发者需要更新菜单时,需将完整配置重新发布一轮。

     

    本例的项目结构如下,除了上一章的文件之外,还增加了三个处理个性化菜单的文件。

     

    addconditional_menu.php:创建个性化菜单

    trymatch.php: 测试匹配个性化菜单

    delconditional_menu.php:删除个性化菜单

    1、创建个性化菜单

    创建个性化菜单的接口是https://api.weixin.qq.com/cgi-bin/menu/addconditional?access_token=ACCESS_TOKEN,以post方式发送菜单字符串。

    addconditional_menu.php

    <?php
    require_once('./Utils.php');
    //个性化菜单字符串
    $menujson = '{
    	"button":[
     	{
        	"type":"click",
        	"name":"单击",
         	"key":"V1001_TODAY_MUSIC"
    	},
    	{
    		"name":"搜素",
    		"sub_button":[
                {
                    "type":"view",
                    "name":"百度",
                    "url":"http://www.baidu.com/"
                }
            ]
     }],
     "matchrule":{
      "sex":"1"
      }
    }';
    $url = "https://api.weixin.qq.com/cgi-bin/menu/addconditional?access_token=".Utils::get_access_token();
    //创建个性化菜单
    $result = Utils::https_request($url, $menujson);
    //返回返回menuid表示成功
    echo $result;
    

    返回结果如下:

    查看菜单发现从默认菜单变成了个性化菜单,如下所示

     

     

    这里只设置了性别过滤,1表示男性,有关其他的条件设置请参看个性化菜单接口

     

     

    2、测试个性化菜单匹配结果

    测试接口是https://api.weixin.qq.com/cgi-bin/menu/trymatch?access_token=ACCESS_TOKEN,需要post "user_id"过去。

    trymatch.php

    <?php
    @header('Content-type: text/plain;charset=UTF-8');
    require_once('./Utils.php');
    $url = "https://api.weixin.qq.com/cgi-bin/menu/trymatch?access_token=".Utils::get_access_token();
    //user_id可以是粉丝的OpenID,也可以是粉丝的微信号
    $userID = '{"user_id":"o4WmZ0h-4huBUVQUczx2ezaxIL9c"}';
    $result = Utils::https_request($url, $userID);
    echo $result;

    返回结果如下:

    3、删除个性化菜单

    删除个性化菜单接口是https://api.weixin.qq.com/cgi-bin/menu/delconditional?access_token=ACCESS_TOKEN,需要post“menuid”过去。

    delconditional_menu.php

    <?php
    @header('Content-type: text/plain;charset=UTF-8');
    require_once('./Utils.php');
    $url = "https://api.weixin.qq.com/cgi-bin/menu/delconditional?access_token=".Utils::get_access_token();
    //menuid,个性化菜单的menuid
    $menuID = '{"menuid":414784577}';
    $result = Utils::https_request($url, $menuID);
    echo $result;

    返回结果如下表示成功:

     

    4、查询个性化菜单

    使用普通自定义菜单查询接口可以获取默认菜单和全部个性化菜单信息,请参看上一章。


    查询之后结果如下:

    这里的menuid和上面的不一样是因为我删除了之前的个性化菜单,然后重新初始化了一次。


    5、删除所有菜单

    使用普通自定义菜单删除接口可以删除所有自定义菜单(包括默认菜单和全部个性化菜单),请参看上一章。

    相关博客

    微信公众号开发(一)服务器及接口的配置

    微信公众号开发(二)基础接口

    微信公众号开发(三)获取access_token

    微信公众号开发(四)自定义菜单

    微信公众号开发(五)个性化菜单

    微信公众号开发(六)素材管理

    微信公众号开发(七)发送客服消息

    微信公众号开发(八)用户管理

    微信公众号开发(九)群发消息接口

    微信公众号开发(十)模板消息

    微信公众号开发(十一)生成带参数二维码

    微信公众号开发(十二)OAuth2.0网页授权

    展开全文
  • 是基于Java的微信公众平台的个性化菜单接口,初级入门参考。
  • pyqt制作的个性化菜单

    2011-12-28 10:19:45
    pyqt用python脚本语言编写的个性化菜单,实现了除QAction之外的QWidgetAction功能,实现了鼠标EVENT.
  • 微信公众号个性化菜单

    千次阅读 2016-07-27 22:02:58
    百度上查了下,微信还真提供了这种解决方案,名叫个性化菜单。 这个功能有个缺陷,更改过后的菜单不能立马生效,有几分钟的延迟。后来项目里还是放弃了这个方案。因为发现网上讲这块的还是很少。还是值得总结下。...

    之前项目里需求需要根据不同用户类型显示不同的微信公众号菜单。百度上查了下,微信还真提供了这种解决方案,名叫个性化菜单。
    这个功能有个缺陷,更改过后的菜单不能立马生效,有几分钟的延迟。后来项目里还是放弃了这个方案。因为发现网上讲这块的还是很少。还是值得总结下。希望能帮到有需要的童鞋。

    
    /**
     * Created by Administrator on 16-6-24.
     */
    public class CreateMenu {
    
        private static final String   ACCESS_TOKEN  ="YL6F996Sb8q-Iqfipm5_irvKUtyq789HYl8jcWABL5tOuTabvROzn0W5AQSp6soSUEr7BCn3P2iMvgrKqD7dtjn8JOFTRWZixP0flskKA7dPw5y1diOzfdt1UOd2udcWWFfACADDM";
        public static void main(String[] args) {
            UploadGetImagesRequest up = new UploadGetImagesRequest();
            String url ="https://api.weixin.qq.com/cgi-bin/menu/addconditional?access_token="+ Token.getAccess_token();
            String menue = "{\n" +
                    " \t\"button\":[\n" +
                    "            {\n" +
                    "                \"name\": \"气象监测\", \n" +
                    "                \"sub_button\": [\n" +
                    "                    {\n" +
                    "                        \"type\": \"view\", \n" +
                    "                        \"name\": \"大风信息\", \n" +
                    "                        \"url\": \"http://www.xxx.com/ooo/eee/windhome.jsp\", \n" +
                    "                        \"sub_button\": [ ]\n" +
                    "                    }, \n" +
                    "                    {\n" +
                    "                        \"type\": \"view\", \n" +
                    "                        \"name\": \"雨量监测\", \n" +
                    "                        \"url\": \"http://www.xxx.com/ooo/eee/rainhome.jsp\", \n" +
                    "                        \"sub_button\": [ ]\n" +
                    "                    }, \n" +
                    "                    {\n" +
                    "                        \"type\": \"view\", \n" +
                    "                        \"name\": \"雷暴监测\", \n" +
                    "                        \"url\": \"http://www.xxx.com/ooo/eee/thunderstormWeatherTable.jsp\", \n" +
                    "                        \"sub_button\": [ ]\n" +
                    "                    }, \n" +
                    "                    {\n" +
                    "                        \"type\": \"view\", \n" +
                    "                        \"name\": \"能见度\", \n" +
                    "                        \"url\": \"http://www.xxx.com/ooo/eee/fogWeatherTable.jsp\", \n" +
                    "                        \"sub_button\": [ ]\n" +
                    "                    }\n" +
                    "                ]\n" +
                    "            }, \n" +
                    "            {\n" +
                    "                \"name\": \"台风信息\", \n" +
                    "                \"sub_button\": [\n" +
                    "                    {\n" +
                    "                        \"type\": \"view\", \n" +
                    "                        \"name\": \"台风监测\", \n" +
                    "                        \"url\": \"http://tf.szmb.gov.cn/wap.htm?ver=2.0\", \n" +
                    "                        \"sub_button\": [ ]\n" +
                    "                    }, \n" +
                    "                    {\n" +
                    "                        \"type\": \"view\", \n" +
                    "                        \"name\": \"卫星云图\", \n" +
                    "                        \"url\": \"http://www.xxx.com/ooo/eee/cloudWeatherTable.jsp\", \n" +
                    "                        \"sub_button\": [ ]\n" +
                    "                    }\n" +
                    "                ]\n" +
                    "            }, \n" +
                    "\t\t\t {\n" +
                    "                \"name\": \"预报预警\", \n" +
                    "                \"sub_button\": [\n" +
                    "                    {\n" +
                    "                        \"type\": \"view\", \n" +
                    "                        \"name\": \"预报预警\", \n" +
                    "                        \"url\": \"http://www.xxx.com/ooo/eee/forecastWarning.jsp\", \n" +
                    "                        \"sub_button\": [ ]\n" +
                    "                    }, \n" +
                    "                    {\n" +
                    "                        \"type\": \"view\", \n" +
                    "                        \"name\": \"更改登录\", \n" +
                    "                        \"url\": \"https://open.weixin.qq.com/connect/oauth2/authorize?appid=youid&redirect_uri=yourul\", \n" +
                    "                        \"sub_button\": [ ]\n" +
                    "                    }\n" +
                    "                ]\n" +
                    "            }\n" +
                    "        ],\n" +
                    "\"matchrule\":{\n" +
                    "  \"tag_id\":\"104\",\n" +
                    " \n" +
                    "  }\n" +
                    "}";
    
            String s = up.sendPost(url,menue);   // res:{"menuid":705067163}
            System.out.println(s);
        }
    
    }
    

    工具类UploadGetImagesRequest 类中 发送url请求方法

        /**
         * 向指定URL发送POST方法的请求
         * @param
         * @param param
         *            请求参数,格式应该满足name1=value1&name2=value2的形式。
         * @return URL所代表远程资源的响应
         */
        public static String sendPost(String sendurl, String param) {
            String result = "";
            try {
                // 创建连接
                URL url = new URL(sendurl);
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                connection.setDoOutput(true);
                connection.setDoInput(true);
                connection.setRequestMethod("POST");
                connection.setUseCaches(false);
    
                connection.setInstanceFollowRedirects(true);
                connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                // connection.connect();
    
                // POST请求
                //DataOutputStream out = new DataOutputStream(connection.getOutputStream());
                PrintWriter out = new PrintWriter(new OutputStreamWriter(connection.getOutputStream(),"utf-8"));
                out.write(param);
                out.flush();
                out.close();
    
                // 读取响应 发送
                BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(),"utf-8"));
    
                String lines = null;
                StringBuffer sb = new StringBuffer("");
                while ((lines = reader.readLine()) != null) {
                    //lines = new String(lines.getBytes(), "utf-8");
                    //System.out.println(lines);
                    sb.append(lines);
                }
                result = sb.toString();
    
                reader.close();
                // 断开连接
                connection.disconnect();
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return result;
        }
    
    /**
         * 向指定URL发送GET方法的请求
         * @param url 发送请求的URL
         * @param param 请求参数,格式满足name1=value1&name2=value2的形式。
         * @return URL所代表远程资源的响应
         */
        public static String sendGet(String url , String param)
        {
            String result = "";
            String urlName = url + "?" + param;
            try
            {
                URL realUrl = new URL(urlName);
                // 打开和URL之间的连接
                URLConnection conn = realUrl.openConnection();
                // 设置通用的请求属性
                conn.setRequestProperty("connection", "Keep-Alive");
                conn.setRequestProperty("accept", "*/*");
                conn.setRequestProperty("user-agent"
                        , "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
                // 建立实际的连接
                conn.connect();
                // 获取所有响应头字段
                Map<String, List<String>> map = conn.getHeaderFields();
                // 遍历所有的响应头字段
                for (String key : map.keySet())
                {
                    //System.out.println(key + "--->" + map.get(key));
                }
                try(
                        // 定义BufferedReader输入流来读取URL的响应
                        BufferedReader in = new BufferedReader( new InputStreamReader(conn.getInputStream() , "utf-8")))
                {
                    String lines = null;
                    StringBuffer sb = new StringBuffer("");
                        while ((lines = in.readLine()) != null) {
    
                        sb.append(lines);
                    }
                    result = sb.toString();
                }
            }
            catch(Exception e)
            {
                System.out.println("发送GET请求出现异常!" + e);
                e.printStackTrace();
            }
            System.out.println("res:"+result);
            return result;
        }
    
    
    

    获取token

    /**
     * Created by Administrator on 16-6-24.
     */
    public class GetToken {
    
        public static void main(String[] args) {
            String id="xxx";
            String key ="ooo";
            String url ="https://api.weixin.qq.com/cgi-bin/token";
            String parm ="grant_type=client_credential&appid="+id+"&secret="+key;
            UploadGetImagesRequest up = new UploadGetImagesRequest();
            up.sendGet(url,parm);
        }
    }
    

    管理用户组

    
    /**
     * Created by Administrator on 16-6-24.
     */
    public class ManageUserGroup {
    
        private static final String   ACCESS_TOKEN  ="YL6FWQTK6Sb8q-Iqfipm5_irvKUererl8jcWABL5tOuTabvROzn0W5AQSp6soSUEr7BCn3P2iMvgrKqD7dtjn8JOvcfdxP0flskKA7derediOzfdt1UOd2udcWWFfACADDM";
    
        public static void main(String[] args) {
    
            //queryAllGroup();
            //res:{"groups":[{"id":0,"name":"未分组","count":17},
            // {"id":1,"name":"黑名单","count":0},
            // {"id":2,"name":"星标组","count":0},
            // {"id":101,"name":"thunder","count":0},
            // {"id":102,"name":"haven","count":0},
            // {"id":103,"name":"subway125","count":0},
            // {"id":104,"name":"subway3","count":0}]}
           // mvUserToGroup();
            //queryUserGroupId();
            //delGroup();
            //createGroup();
            queryAllGroup();
        }
    
        /**
         * 创建组
         */
        public static void createGroup(){
            UploadGetImagesRequest up = new UploadGetImagesRequest();
            String url ="https://api.weixin.qq.com/cgi-bin/groups/create?access_token="+ Token.getAccess_token();
            String menue ="{\"group\":{\"name\":\"subway3\"}}";
            up.sendPost(url,menue);
            // res:{"group":{"id":100,"name":"user1"}}
            //res:{"group":{"id":101,"name":"user2"}}
            //res:{"group":{"id":102,"name":"user3"}}
        }
    
    
        /**
         * 查询所有组
         */
        public static  void queryAllGroup(){
            //https://api.weixin.qq.com/cgi-bin/groups/get?access_token=ACCESS_TOKEN
            String url ="https://api.weixin.qq.com/cgi-bin/groups/get";
            String parm ="access_token="+ Token.getAccess_token();
            UploadGetImagesRequest up = new UploadGetImagesRequest();
            up.sendGet(url,parm);
        }
    
        /**
         * 移动用户到某组
         */
        public static void mvUserToGroup(String userid,String groupid) {
            UploadGetImagesRequest up = new UploadGetImagesRequest();
            String url = "https://api.weixin.qq.com/cgi-bin/groups/members/update?access_token="+ Token.getAccess_token();
            String param = "{\"openid\":\""+userid+"\",\"to_groupid\":"+groupid+"}";
            String res =  up.sendPost(url,param);
            System.out.println("移动用户到组:"+res);
        }
    
        /**
         * 查询用户组id
         */
        public  static  void queryUserGroupId(){
            //https://api.weixin.qq.com/cgi-bin/groups/getid?access_token=ACCESS_TOKEN
            UploadGetImagesRequest up = new UploadGetImagesRequest();
            String url = "https://api.weixin.qq.com/cgi-bin/groups/getid?access_token="+ Token.getAccess_token();
            String param = "{\"openid\":\"youid\"}";  //res:{"groupid":0}
            up.sendPost(url,param);
    
        }
    
        public static void delGroup(){
    //https://api.weixin.qq.com/cgi-bin/groups/delete?access_token=ACCESS_TOKEN
            UploadGetImagesRequest up = new UploadGetImagesRequest();
            String url = "https://api.weixin.qq.com/cgi-bin/groups/delete?access_token="+ Token.getAccess_token();
            String param = "{\"group\":{\"id\":100}}";
            up.sendPost(url,param);
        }
    
    }
    

    查询菜单

        public static void main(String[] args) {
    
            String url ="https://api.weixin.qq.com/cgi-bin/menu/get";
            String parm ="access_token="+ Token.getAccess_token();
            UploadGetImagesRequest up = new UploadGetImagesRequest();
            up.sendGet(url,parm);
        }
    

    匹配用户和菜单

      public static void main(String[] args) {
    
            // 测试匹配菜单
            UploadGetImagesRequest up = new UploadGetImagesRequest();
            String url ="https://api.weixin.qq.com/cgi-bin/menu/trymatch?access_token="+ Token.getAccess_token();
            String menue ="{\n" +
                    "\t\"user_id\":\"微信唯一id\"\n" +
                    "}";
            String s =  up.sendPost(url,menue);
            System.out.println(s);
        }

    小技巧,使用IDEA 粘贴一串字符时可以自动分割补齐转义号很方便。

    展开全文
  • 主要为大家详细介绍了java微信开发API第四步,自定义菜单以及个性化菜单实现 ,感兴趣的小伙伴们可以参考一下
  • Java根据标签设置用户个性化菜单

    千次阅读 2017-12-15 15:54:35
    个性化菜单具体使用场景  为了实现对用户的精准推送,我们决定将通过代码设置用户显示个性化的菜单,用户一关注我们的公总号,我们就会给用户打一个新用户的标签,然后我们可以设置相应的筛选条件来筛选出相应的...
  • 根据微信开发文档,通过个性化菜单接口成功创建了个性化菜单,运行之后能返回一个menuid,但是测试个性化菜单匹配结果时,得到的还是默认的自定义菜单。想请教一下各位,怎样才能将这个已创建好的个性化菜单展示出来...
  • 微信开发学习总结(四)——自定义菜单(5)——个性化菜单接口 博客地址: https://blog.csdn.net/qq_29914837/article/details/82948779
  • 微信公众号生成个性化菜单

    千次阅读 2016-12-22 20:33:30
    微信公众号后来新增的接口,可以生成个性化菜单,可以先看下个性化菜单与自定义菜单的数据格式有哪些不同。 在原有的数据格式基础上,增加了以下部分: "matchrule":{ "group_id":"2", "sex":"1", "country":...
  • 利用微信接口调试工具设置公众号个性化菜单微信接口调试工具公众号菜单的json格式示例默认菜单的post接口个性化菜单的post接口如何用接口调试工具添加个性化菜单 微信接口调试工具 在线接口调试工具链接:...
  • 这是我的15-112学期项目,称为CMU个性化菜单。 该程序网站在CMU地区附近刮擦了不同的餐馆-奥克兰,Shadyside,松鼠山,并为用户提供适合他们选择的餐馆。 菜单显示餐厅名称,位置,食品名称和食品价格。 从菜单中,...
  • 为了帮助公众号实现灵活的业务运营,微信公众平台新增了个性化菜单接口,开发者可以通过该接口,让公众号的不同用户群体看到不一样的自定义菜单。该接口开放给已认证订阅号和已认证服务号。 开发者可以通过以下条件...
  • * 自定义菜单和个性化菜单文档的阅读解析 * 菜单JSON的分析以及构建对应bean * 自定义菜单的实现 * 个性化菜单的实现 * 微信自定义菜单所有类型菜单都给出演示 * 本文结束会给出包括本文前四篇文章的所有演示...
  • 我一篇博文里边介绍的如何创建Qt个性化菜单里的例子程序: 博文地址:http://blog.csdn.net/NRC_DouNingBo/archive/2010/05/11/5580302.aspx 里边创建个性化菜单项的两个类已经封装好,可以直接拿来使用。
  • 微信公众平台个性化菜单的建立

    千次阅读 2016-07-23 10:01:42
    1.建立个性化菜单,要先建立一个默认菜单, 2.在分配个性化菜单的时候,先建立用户分组,把个性化菜单分配给用户分组(利用查询分组获得分组的id),然后把指定的微信号加入到分组 //curl方法 public function curl_...
  • 微信公众平台开发(109) 个性化菜单

    千次阅读 2016-01-16 11:32:49
    关键字:微信公众平台 ...为了帮助公众号实现灵活的业务运营,微信公众平台新增了个性化菜单接口,开发者可以通过该接口,让公众号的不同用户群体看到不一样的自定义菜单。该接口开放给已认证订阅号和已认证服务号。
  • 首先,直接上图,看效果,如下,有三个根菜单,每个菜单上有不同类型的子菜单,点击子菜单可以实现用户和公众号实时交互 本案例技术栈:springboot,mysql,logback,mybatis 菜单创建请求接...
  • “微信公众平台深度开发Java版 v2.0”系列课程共有6季,使用JAVA语言,系统讲解微信公众平台订阅号、服务号官方列出的全部功能接口,包括:自定义菜单、个性化菜单(按需定制菜单)、群发消息、客服消息(有限次消息...
  • MFC 个性化菜单

    2013-09-24 15:00:00
    不区分大小写,搜索Customize,再启动自定义菜单、工具栏等代码中,将TRUE改成FALSE。并删除相应函数。 2. 在CMainFrame中,重载OnCommand函数,加入代码: BOOL CMainFrame::OnCommand(WPARAM wParam, ...
  • 要实现个性化菜单最常用的方法是继承JMenuItem类,然后再重写paintComponent方法,但这个作法有几个不足之处,一是不能绘制菜单项在高亮时的效果,二是不能重设组合键的字体颜色,三是当菜单项的有无图标的显示方式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 32,059
精华内容 12,823
关键字:

个性化菜单