当前位置:   article > 正文

微信小程序消息订阅功能_微信小程序订阅功能

微信小程序订阅功能

一、功能介绍

消息能力是小程序能力中的重要组成,我们为开发者提供了订阅消息能力,以便实现服务的闭环和更优的体验。

  • 订阅消息推送位置:服务通知

  • 订阅消息下发条件:用户自主订阅(用户订阅了才能接收推送的消息)

  • 订阅消息卡片跳转能力:点击查看详情可跳转至该小程序的页面(就是:进入小程序查看)

二、消息类型

1. 一次性订阅消息

一次性订阅消息用于解决用户使用小程序后,后续服务环节的通知问题。用户自主订阅后,开发者可不限时间地下发一条对应的服务消息;每条消息可单独订阅或退订。(简而言之:就是订阅一次接收一次)

2. 长期订阅消息

一次性订阅消息可满足小程序的大部分服务场景需求,但线下公共服务领域存在一次性订阅无法满足的场景,如航班延误,需根据航班实时动态来多次发送消息提醒。为便于服务,我们提供了长期性订阅消息,用户订阅一次后,开发者可长期下发多条消息。(简而言之:就是长期)

目前长期性订阅消息仅向政务民生、医疗、交通、金融、教育等线下公共服务开放,后期将逐步支持到其他线下公共服务业务。

三、使用步骤

1. 步骤一:获取模板 ID

在微信公众平台手动配置获取模板 ID:
登录 https://mp.weixin.qq.com 获取模板,如果没有合适的模板,可以申请添加新模板,审核通过后可使用

2. 步骤二:获取下发权限

wx.requestSubscribeMessage 必须要在用户触发点击等交互行为后才能调用。这是因为 requestSubscribeMessage API 会弹出授权订阅消息的界面,因此会直接涉及到用户隐私。如果没有用户的明确授权,小程序及公众号都无法在后台直接向用户发送订阅消息(我就这里犯了错误,没有事件触发就直接调用了),还有一点就是wx会自动获取openid等微信小程序相关的参数,所以不要误解为一人订阅,人人能接收。

wx.requestSubscribeMessage({
     tmplIds: ['7llp6tWRpQQgmi_xNm2jRouhujwTRWsd280fauH_xxx'], // 需要订阅的模板消息的id列表
     success(res) {
       // 订阅成功,res为一个对象,包含已订阅的模板消息的订阅状态
       console.log(res);
     },
     fail(err) {
       // 订阅失败,可能是用户拒绝了订阅或者其他原因
       console.log(err);
     }
})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3. 步骤三:调用接口下发订阅消息

次数限制:开通支付能力的小程序下发上限是3kw/日,没开通的是1kw/日。

POST https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN
  • 1

ACCESS_TOKEN是小程序访问凭证,可以通过一下方式获取:

import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;

public class GetAccessToken {

    // 小程序 APPID 和 APPSecret
    private static final String APPID = "xxxxxxxxxxxxxxxxxx";
    private static final String APPSECRET = "xxxxxxxxxxxxxxxxxx";

    /**
     * 获取小程序 ACCESS_TOKEN
     * @return 小程序 ACCESS_TOKEN
     */
    public static String getAccessToken() {
        String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + APPID + "&secret=" + APPSECRET;
        String result = HttpUtil.get(url);
        // 使用 Hutool 的 JSONUtil 解析结果
        String accessToken = JSONUtil.parseObj(result).getStr("access_token");
        return accessToken;
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

调用下发接口发送订阅消息

import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;

public class SendSubscribeMessage {

    /**
     * 下发订阅消息
     * @param accessToken 小程序 ACCESS_TOKEN
     * @param toUser 接收者(用户)的 openid
     * @param templateId 所需下发的订阅模板id
     * @param page 点击消息后跳转的页面,仅限本小程序内的页面。支持带参数,比如 index?foo=bar
     * @param data 订阅内容数据
     * @return 接口调用结果
     */
    public static String sendSubscribeMessage(String accessToken, String toUser, String templateId, String page, Object data) {
        String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + accessToken;
        JSONObject params = new JSONObject();
        params.put("touser", toUser);
        params.put("template_id", templateId);
        params.put("page", page);
        params.put("data", JSONObject.parseObject(JSONUtil.toJsonStr(data)));
        String result = HttpUtil.post(url, params.toJSONString());
        return result;
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

四、注意事项

用户勾选 “总是保持以上选择,不再询问” 之后,下次订阅调用 wx.requestSubscribeMessage 不会弹窗,保持之前的选择,修改选择需要打开小程序设置进行修改。

五、参考文档

微信小程序消息订阅传送门

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/849512
推荐阅读
相关标签
  

闽ICP备14008679号