为了实现对用户的精准推送,我们决定将通过代码设置用户显示个性化的菜单,用户一关注我们的公总号,我们就会给用户打一个新用户的标签,然后我们可以设置相应的筛选条件来筛选出相应的用户群体,然后我们可以将这批用户显示个性化的菜单栏,我们可以设置其相应的菜单。
我们将调用下面的方法对用户打一个标签,该方法关键的几个参数一个是AccessToken,还
有标签的tagId,还有一个就是执行对象(也就是用户)的openId;
public static boolean grantTagsToUsers(String accessToken,String tagId,List
StringrequestUrl = GRANT_TAG_TO_USER_URL.replace("ACCESS_TOKEN", accessToken);
Tag4UsersVotag4UsersVo = newTag4UsersVo(openIds, Integer.parseInt(tagId));
StringuserTagJsonStr = JsonUtils.objectToJson(tag4UsersVo);
//根据用户openid查询该用户所在的分组信息
JSONObjectjsonObject = HttpsUtil.sendHttpsRequest(requestUrl, "POST", userTagJsonStr);
if(null != jsonObject)
{
Stringerrcode = jsonObject.getString("errcode");
Stringerrmsg = jsonObject.getString("errmsg");
if ("0".equals(errcode)&& "ok".equals(errmsg)){
returntrue;
}
}
returnfalse;
登录微信公众平台:链接:
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1455782296
点击个性化菜单栏,查看个性化菜单栏的HTTPS请求链接,以及需要传入的json的参数类型
用Java对象生成与之相应的对象,赋值,然后转成json字符串格式,然后再调用自己的方法
参数需要微信的accessToken和自定义Java封装的对象gxhMenuVo
public static String createGxhMenu(String accessToken,GxhMenuVo gxhMenuVo ){
//1.拼接真实访问地址
StringrequestUrl = CREATE_GXH_MENU_URL.replace("ACCESS_TOKEN", accessToken);
//2.封装访问的参数
StringopenIdJsonStr = JsonUtils.objectToJson(gxhMenuVo);
System.out.println(openIdJsonStr);
//3.发起HTTPS请求获取结果
JSONObjectjsonObject = HttpsUtil.sendHttpsRequest(requestUrl,"POST", openIdJsonStr);
//4.验证结果的准确性
if(null != jsonObject)
{
System.out.println(jsonObject);
}
return null;
附上我自己写的用户关注执行个性化菜单调用代码
public boolean setUserMeun(String openId){
AccessToken accessToken =WeixinUtil.getAccessToken(CommonConstant.APPID, CommonConstant.APP_SECRET);
WxTagUtil.grantTagsToUsers(accessToken.getAccess_token(),"103", Arrays.asList(openId));
MatchruleVo matchrule = new MatchruleVo();
matchrule.setTag_id("103");
List
button.add(new OneLevelButtonVo("click","今日歌曲","V1001_TODAY_MUSIC"));
GxhMenuVo gxhMenuVo = new GxhMenuVo(button,matchrule);
String createGxhMenu =WxMenuUtil.createGxhMenu(accessToken.getAccess_token(), gxhMenuVo );
return true;
}
}