微信消息订阅

微信订阅消息过程详解

今年年初,微信小程序的模板消息改成了订阅消息。现在我写一个流程,方便以后开发的时候照着做

官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/subscribe-message.html

订阅消息和模板消息的区别

简单用自己的话介绍一下,模板消息是限制在7天内,有次数限制的发送,由用户完成一个操作后被动的触发。订阅消息首先需要用户进行授权,授权的时候会有弹框提示;用户每授权一次,就能推送一次。也有不再弹框的选项,但是仍然需要授权这个动作,才可以推送消息,所以订阅消息也叫一次性订阅消息。目前也有一次授权一直可以推送的长期消息,但是微信有限制使用的小程序类别,所以普通小程序要想能多次给用户发送消息,只能引导用户多次点击授权。

所以按照官方的意思,有些小程序还是应该把消息推送做到服务号上。

选择模板

在公众平台上开通订阅消息,选择模板。模板会根据你小程序的类别不同有所不同。

选用一个模板

编排消息的格式,保存即可,会生成一个模板id,等会会用到

获取下发权限

小程序上需要设置事件,触发弹框,用户点击同意之后才可以消息推送

wx.requestSubscribeMessage({
      tmplIds: ['2hHe9FLnV594nDvrCcksg25wgUT_HwwKNYluXfCqHhY'],
      // 填入刚刚生成的模板id
      success(res){
        console.log(res)
      },fail(res){
        console.log(res)
      }
    })

触发事件后会调出一个弹窗,用户点击允许后,有一个回调

如果用户勾选了保持选项,下一次就不会弹框

要注意的是,用户每授权一次,小程序就有发送订阅消息的权限一次,假如用户点击了三次授权,那么小程序就有权限推三条订阅消息。

服务端调用接口发送订阅消息

POST https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN
// 请求示例
{
  "touser": "OPENID",  // 用户openid
  "template_id": "TEMPLATE_ID",  // 模板id
  "data": {
      //消息内容
      "number01": {
          "value": "339208499"
      },
      "date01": {
          "value": "2015年01月05日"
      },
      "site01": {
          "value": "TIT创意园"
      }
  }
}
  • 注意在url中拼上access_token,请求体中使用正确的openid
  • accesstoken需要用appid,appsecret去auth.getAccessToken换,每两个小时更新一次。openid要wx.login的code使用code2session去换
  • 不同的小程序,同一个用户的openid不同

data

注意data的内容要对照官方文档中的填写

例如我的模板

返回ok就表示发送成功了

原文地址:https://www.cnblogs.com/telecasterfanclub/p/13564222.html