为了帮助公众号实现灵活的业务运营,微信公众平台新增了个性化菜单接口,开发者可以通过该接口,让公众号的不同用户群体看到不一样的自定义菜单。该接口开放给已认证订阅号和已认证服务号。

在这篇微信公众平台开发教程中,我们将介绍如何开发个性化菜单的功能。

一、个性化菜单接口

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

1、用户分组(开发者的业务需求可以借助用户分组来完成)

2、性别

3、手机操作系统

4、地区

个性化菜单接口说明:

1、个性化菜单要求用户的微信客户端版本在iPhone6.2.2,Android 6.2.4以上。

2、菜单的刷新策略是,在用户进入公众号会话页或公众号profile页时,如果发现上一次拉取菜单的请求在5分钟以前,就会拉取一下菜单,如果菜单有更新,就会刷新客户端的菜单。测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。

3、普通公众号的个性化菜单的新增接口每日限制次数为2000次,删除接口也是2000次,测试个性化菜单匹配结果接口为20000次

4、出于安全考虑,一个公众号的所有个性化菜单,最多只能设置为跳转到3个域名下的链接

5、创建个性化菜单之前必须先创建默认菜单(默认菜单是指使用普通自定义菜单创建接口创建的菜单)。如果删除默认菜单,个性化菜单也会全部删除

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

当公众号创建多个个性化菜单时,将按照发布顺序,由新到旧逐一匹配,直到用户信息与matchrule相符合。如果全部个性化菜单都没有匹配成功,则返回默认菜单。

例如公众号先后发布了默认菜单,个性化菜单1,个性化菜单2,个性化菜单3。那么当用户进入公众号页面时,将从个性化菜单3开始匹配,如果个性化菜单3匹配成功,则直接返回个性化菜单3,否则继续尝试匹配个性化菜单2,直到成功匹配到一个菜单。

微信个性化菜单接口地址为(注意和创建默认菜单的接口不一样)

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

请求参数示例如下

{"button":[

{"type":"click","name":"今日歌曲","key":"V1001_TODAY_MUSIC"},

{"name":"菜单","sub_button":[

{"type":"view","name":"搜索","url":"http://www.soso.com/"},

{"type":"view","name":"视频","url":"http://v.qq.com/"},

{"type":"click","name":"赞一下我们","key":"V1001_GOOD"}]

}],"matchrule":{"group_id":"2","sex":"1","country":"中国","province":"广东","city":"广州","client_platform_type":"2"}

}

参数说明

参数是否必须说明

button

一级菜单数组,个数应为1~3个

sub_button

二级菜单数组,个数应为1~5个

type

菜单的响应动作类型

name

菜单标题,不超过16个字节,子菜单不超过40个字节

key

click等点击类型必须

菜单KEY值,用于消息接口推送,不超过128字节

url

view类型必须

网页链接,用户点击菜单可打开链接,不超过256字节

media_id

media_id类型和view_limited类型必须

调用新增永久素材接口返回的合法media_id

matchrule

菜单匹配规则

group_id

用户分组id,可通过用户分组管理接口获取

sex

性别:男(1)女(2),不填则不做匹配

client_platform_type

客户端版本,当前只具体到系统型号:IOS(1), Android(2),Others(3),不填则不做匹配

country

国家信息,是用户在微信中设置的地区,具体请参考地区信息表

province

省份信息,是用户在微信中设置的地区,具体请参考地区信息表

city

城市信息,是用户在微信中设置的地区,具体请参考地区信息表

matchrule共六个字段,均可为空,但不能全部为空,至少要有一个匹配信息是不为空的。 country、province、city组成地区信息,将按照country、province、city的顺序进行验证,要符合地区信息表的内容。地区信息从大到小验证,小的可以不填,即若填写了省份信息,则国家信息也必填并且匹配,城市信息可以不填。 例如 “中国 广东省 广州市”、“中国 广东省”都是合法的地域信息,而“中国 广州市”则不合法,因为填写了城市信息但没有填写省份信息。 地区信息表请点击下载。

返回结果

正确时的返回JSON数据包如下,错误时的返回码请见接口返回码说明。

{"errcode":0,"errmsg":"ok"}

接口实现如下:

菜单配置实现如下:

上述菜单将会给 性别为男,地区在 新疆 五家渠,手机类型为IOS 的微信用户设置一个个性化的菜单。

微信中查看用户信息如下

二、查询菜单

使用普通自定义菜单查询接口可以获取默认菜单和全部个性化菜单信息,查询结果如下所示。

{"menu": {"button": [

{"name": "自助查询","sub_button": [

{"type": "view","name": "☀天气预报","url": "http://m.weather.com.cn/","sub_button": [ ]

},

{"type": "view","name": "

微信个性化菜单 java_微信公众平台开发(109) 个性化菜单相关推荐

  1. php 自定义菜单 openid,微信公众平台开发(99) 自定义菜单获取OpenID

    关键字 微信公众平台 自定义菜单 OpenID 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/p/weixin-menu-get-openid.html 在这篇 ...

  2. 微信公众平台开发(104) 自定义菜单扫一扫、发图片、发地理位置

    关键字:微信公众平台 自定义菜单 扫一扫 发图片 发地理位置 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/p/weixin-menu-new-type.htm ...

  3. 微信公众平台开发教程--自定义菜单

    微信公众平台开发教程(五)自定义菜单 请尊重作者版权,如需转载,请标明出处. 应大家强烈要求,将自定义菜单功能课程提前. 一.概述: 如果只有输入框,可能太简单,感觉像命令行.自定义菜单,给我们提供了 ...

  4. 微信公众平台开发,自定义菜单,群发消息,网页授权(3)

    前两节说的都是微信开发的初级篇,这一节说高级篇.微信公众号关注以后,下面都是有菜单的,底部有三个一级菜单,每个一级菜单可以添加5个二级菜单.一级菜单最多四个汉字,二级菜单最多7个汉字,多出来的汉字用& ...

  5. 微信公众平台开发(58)自定义菜单

    微信公众平台开发 微信公众平台开发模式 企业微信公众平台 自定义菜单 开发教程  作者:方倍工作室  地址:http://www.cnblogs.com/txw1958/p/weixin-58-cus ...

  6. 第六篇 :微信公众平台开发实战Java版之如何自定义微信公众号菜单

    我们来了解一下 自定义菜单创建接口: http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/menu/create?access_to ...

  7. Senparc.Weixin.MP SDK 微信公众平台开发教程(九):自定义菜单接口说明

    Senparc.Weixin.MP SDK 微信公众平台开发教程(九):自定义菜单接口说明 原文:Senparc.Weixin.MP SDK 微信公众平台开发教程(九):自定义菜单接口说明 上一篇&l ...

  8. 微信公众平台开发教程Java版(六) 事件处理(菜单点击/关注/取消关注)

    前言: 事件处理是非常重要的,这一章讲讲常见的事件处理 1.关注/取消关注 2.菜单点击 事件类型介绍: 在微信中有事件请求是消息请求中的一种.请求类型为:event 而event事件类型又分多种事件 ...

  9. 【微信易信公众平台开发】创建自定义菜单

    本系列文章均为A2BGeek原创,转载务必在明显处注明: 转载自A2BGeek的[微信易信公众平台开发]系列,原文链接:http://blog.csdn.net/a2bgeek/article/det ...

  10. [052] 微信公众平台开发视频公开课第2讲-自定义菜单开发讲解

    微信公众平台开发视频公开课第2讲将为大家讲解自定义菜单的相关知识,时间是2014年5月24日20:00-22:00.本次课程的大纲如下: 1.自定义菜单简介 1)如何获得菜单权限 2)菜单按钮分类(c ...

最新文章

  1. 插入排序,希尔排序,堆排序
  2. 爬虫自动登陆GitHub
  3. 嵌入式系统的组成、嵌入式处理器分类总结、ARM处理器系列总结、ARM Cortex-M3体系结构总结!
  4. CentOS 7.x安装配置
  5. AngularJs通过路由传参解决多个页面资源浪费问题
  6. CentOS5.5下SVN部署文档
  7. MySQL的varchar水真的太深了,你真的会用吗?
  8. Linuxg环境搭建
  9. 手把手教你强化学习(十) 基于Stochastic Policy的深度强化学习方法
  10. Java使用apache commons连接ftp修改ftp文件名失败原因
  11. CodeQL代码安全扫描工具安装部署
  12. 台式计算机进入安全模式蓝屏,电脑进入安全模式蓝屏怎么办?
  13. 基于java的高速公路收费系统 计算机毕业设计
  14. 联想thinkpad bios密码破解,t440,450,460,x240,250,260,x1c,yoga,y70,y50。。。。软件解密
  15. 介绍现有三大前端框架-思想
  16. Linux_admin-练习
  17. 关于聪明与努力的文章.
  18. 有没有什么推荐的视频剪辑软件
  19. win7无法看到工作组计算机,Win7系统无法查看工作组问题的解决方法
  20. 如何把图片转换成PDF?4种简单快捷的方法,一键将图片转PDF

热门文章

  1. 作为兼并重组的重要方式之一,企业合并、分立的具体形式?
  2. matlab绿屏抠像代码,DV影像素材抠像效果研究
  3. SAMBA+LDAP ERROR“smbd dead but pid file exists”
  4. python中fetch_python 异步 fetch demo
  5. Extraneous non-props attributes (ref_key) were passed to component but could not be automatically
  6. 华为荣耀play3分辨率_华为全新国行原封报价
  7. 关于《损失模型》的一点笔记——第一部分引言
  8. 金融级湖仓一体架构——SequoiaDB巨杉数据库初探
  9. 基于qt linux的视频监控,基于Qt和OpenCV的无线视频监控系统
  10. Netbox 开源 IPAM 管理工具搭建详细流程