前言:
我们大家都是用过微信公众号、小程序,想必也遇到过公众号、小程序内的消息提醒或通知,不用我们进入程序就能及时的了解到是否有自己需要处理的事情,简直是一大福音,那么如何完成这个消息订阅提醒,就是我接下来要聊一聊的事情啦;
1、 消息模板:
要进行消息提醒,首先我们需要了解清楚自己要提醒什么,微信官网平台提供了好多模板,可以满足大众通用需求,可以从中选择我们需要的模板,有人可能会说我的需求是独特的,是否也能满足呢,这一点儿人家微信早替我们想到了,可以提交申请定制自己的模板,审批通过后,就可以正常使用了;
公众模板库
微信官网提供的公众模板库,可以满足大众通用需求
消息模板申请
提供的模板库不满足需求,那就自己定制,还是上一步骤的消息模板库页面,鼠标拖动到页面底部,切换到最后一页,我们能看到如下图:“帮忙我们完善模板库”-进入模板申请页面;
填写要申请的模板信息,相关注意事项请一定认真读哦,该花的时间还是要花的,不然得不偿失,模板审核也需要1-3天时间,谨慎操作;
提交完之后,我们可以在审核记录中查看模板审核进展及审核详情;
选定消息模板
登录微信公众平台,找到小程序-消息订阅-我的模板,查看我的消息模板;
2、 编码
前端
用户授权接收消息订阅
// 点击同意推送待办任务、日程提醒
goSendMessage:function(e){
var temlId = ["此处是模板ID"]
wx.requestSubscribeMessage({
tmplIds: temlId,
success(res) {}
})
}
样式展示:
后端
编码时就需要用到我们的模板啦,结合消息模板-选定消息模板步骤看会更清晰(尤其是紫色框中的数据绑定字段名),实现发送消息;
核心代码:
@At("/subscriptionMsg")
@Ok("json")
public void subscriptionMsg(@Param("param") String param){
//模板Model
SubMsgTemplate subMsgTemplate=new SubMsgTemplate();
subMsgTemplate.setTemplate_id(TemplateId); //模板ID
//要跳转的小程序页面,不需要可以不写
subMsgTemplate.setPage("pages/main/main/main");
JSONObject object= JSON.parseObject(param);
String phone = object.getString("phone");
String userId=userService.selectUserByPhone(phone).getId();
String openId=sysUserOauthsService.selectSysuserOauthsByUserId(userId).getOauthId();
subMsgTemplate.setTouser(openId);
Map<String,Object> data=JSON.parseObject(object.getString("data"),HashMap.class);
Map<String,Object> map=new HashMap<>();
Map<String,Object> thing1Map=new HashMap<>();
//将模板信息放进map集合中(这里的数据绑定对应)
thing1Map.put("value",data.get("title")==null?"暂无":data.get("title"));
map.put("thing1", thing1Map);
Map<String,Object> thing2Map=new HashMap<>();
thing2Map.put("value",data.get("address")==null?"暂无":data.get("address"));
map.put("thing3",thing2Map);
Map<String,Object> date2Map=new HashMap<>();
date2Map.put("value",data.get("startDate")==null?"暂无":data.get("startDate"));
map.put("date2",date2Map);
subMsgTemplate.setData(map);
//转格式
String jsonStr=JSONObject.toJSONString(subMsgTemplate);
HttpUtils.doPostJsonString("https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token="+accessToken,jsonStr);
}