一、小程序订阅消息

1.1、功能介绍

  • 订阅消息推送位置:服务通知
  • 订阅消息下发条件:用户自主订阅
  • 订阅消息卡片跳转能力:点击查看详情可跳转至该小程序的页面

1.2、消息类型

  • 一次性订阅消息:一次性订阅消息用于解决用户使用小程序后,后续服务环节的通知问题。用户自主订阅后,开发者可不限时间地下发一条对应的服务消息;每条消息可单独订阅或退订
  • 长期订阅消息:一次性订阅消息可满足小程序的大部分服务场景需求,但线下公共服务领域存在一次性订阅无法满足的场景,如航班延误,需根据航班实时动态来多次发送消息提醒。为便于服务,我们提供了长期性订阅消息,用户订阅一次后,开发者可长期下发多条消息。目前长期性订阅消息仅向政务民生、医疗、交通、金融、教育等线下公共服务开放,后期将逐步支持到其他线下公共服务业务。

二、实现订阅模版消息

2.1、获取模版ID

springboot整合mqtt订阅主题 springboot订阅功能_spring boot

springboot整合mqtt订阅主题 springboot订阅功能_模版_02

2.2、获取下发权限(此为小程序端出发,详情见官方文档:传送门

2.3、调用接口下发订阅消息

2.3.1、首先我们要知道推送给谁,openId是用户在小程序中的唯一标识。

2.3.2、其次我们要有access_token

2.3.3、编写发送模版工具类

package com.prison.common.util;

import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import lombok.extern.slf4j.Slf4j;

/**
 * @author WangJing
 * @Description WeChatUtil工具
 * @date 2021/6/7 21:45
 */
@Slf4j
public class WeChatUtil {



    //发送订阅消息
    public static final String MESSAGE_SUBSCRIBE_SEND = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESSTOKEN";

    

    /**
     * 发送订阅消息
     *
     * @param accessToken
     * @param openId
     * @param templateId
     * @param json
     * @return
     */
    public static String messageSubscribeSend(String accessToken, String openId, String templateId, JSONObject json) {
        JSONObject body = new JSONObject();
        body.set("touser", openId);//接受人的openId
        body.set("template_id", templateId);//模版ID
        body.set("data", json);//如餐
        String requestUrl = MESSAGE_SUBSCRIBE_SEND.replace("ACCESSTOKEN", accessToken);

        String post = HttpUtil.post(requestUrl, body.toString());
        return post;
    }

    /**
     * 测试发送订阅消息
     * @param args
     */
    public static void main(String[] args) {
        String templateId = "your templateId";
        JSONObject json = new JSONObject();
        json.set("thing1", new JSONObject().set("value", "陈"));
        json.set("thing2", new JSONObject().set("value", "身份证"));
        json.set("character_string3", new JSONObject().set("value", "123456*********321"));
        json.set("thing4", new JSONObject().set("value", "审核失败"));
        String accessToken = "your token";
        String openId = "your openId";
        String s = messageSubscribeSend(accessToken, openId, templateId, json);
        System.out.println(s);
    }

}

2.3.4、效果

springboot整合mqtt订阅主题 springboot订阅功能_json_03

三、注意:jar包引用 和 小程序 appid 等配置