小程序订阅服务通知、消息订阅

需要的小程序信息:

  1. appId小程序ID
  2. secret小程序密钥
    在这里插入图片描述
  3. templateId模板id在这里插入图片描述
  4. openId 可通过服务端获取,前端提供wxCode\

先附上官网地址:uniapp订阅消息

前端

使用框架:uniapp

前端要做的事情其实很简单,只需要调用uniapp官方的requestsubscribemessageApi, 并在成功的回调中调用服务端接口告诉服务端订阅成功即可。
以下为示例代码:

  1. 通过uni.login 获取wxCode, 提供给服务端用作获取openId
const getOpenId = () => {
  uni.login({
    provider: 'weixin',
    success: (res) => {
      uni.request({
        url: 'http://localhost:3000/getOpenId', // 需修改为实际对应的url
        method: 'POST',
        data: {
          code: res.code
        },
        header: {
          'content-type': 'application/x-www-form-urlencoded;charset=UTF-8',
        },
        success(r: any) {
          openId.value = r.data.data
        }
      })
    }
  })
}
  1. 获取到openId之后,调用uni.requestSubscribeMessage弹出订阅提示,并在回调中调用服务端接口。
const subscribe = () => {
  uni.requestSubscribeMessage({
    tmplIds: ['自己的模板id'],
    success(res) {
      uni.request({
        url: 'http://localhost:3000/subscribe',// 需修改为实际对应的url
        method: 'POST',
        data: {
          openId: openId.value,
        },
        header: {
          'content-type': 'application/x-www-form-urlencoded;charset=UTF-8',
        },
        success(res) {
          console.log(res)
        }
      })
    },
  })
}

到这里,前端要做的事情就差不多了,剩下的交给服务端了。

后端

使用语言:node.js

appId, secret 文章开头有获取途径

  1. 获取openId
app.post('/getOpenId', async (req, res) => {
  const url = `https://api.weixin.qq.com/sns/jscode2session?appid=${appid}&secret=${secret}&js_code=${req.body.code}&grant_type=authorization_code`;
  const resData = await request.get(url)
  res.send({ data: resData.data.openid, status: 200 })
})
  1. 前端在订阅成功的回调中使用的接口
app.post('/subscribe', async (req, res) => {
  // 获取access_token, 供调用微信接口发起服务通知使用
  const tokenRes = await request.get('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=appid&secret=secret')
  const data = {
    touser: req.body.openId,
    template_id: '模板id',
    page: 'pages/index/index',
    data: { // 这里为模板字段配置
      "thing1": {
        "value": '测试1'
      },
      "thing3": {
        "value": '测试2'
      },
    }
  }
  // 调用微信接口,向用户发起服务通知,此接口调用时机可自行把握,此处为实时通知。
  const messageRes = await request.post(`https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=${tokenRes.data.access_token}`, data)
  res.send({ data: circularJSON.stringify(messageRes), status: 200 })
})

到这里,服务端代码也差不多了。

微信公众平台后台模板配置

需要微信小程序具有管理权限的人登录小程序公众平台后台,对模板进行相应的配置。

  1. 开启订阅消息,并配置模板。
    在这里插入图片描述
  2. 查看模板详情
    在这里插入图片描述
    这里详细内容中的字段是我们需要用到的
  const data = {
    touser: req.body.openId,
    template_id: '模板id',
    page: 'pages/index/index',
    data: { // 这里为模板字段配置
      "thing1": {
        "value": '测试1'
      },
      "thing3": {
        "value": '测试2'
      },
    }
  }

thing1thing3就对应模板中详细内容的值,value则为实际值

以上则为 小程序订阅服务通知主要代码实现 的主要代码

微信小程序订阅消息是一种常用的功能,用于向用户发送即时消息通知。通过调用wx.requestSubscribeMessage()方法,我们可以请求用户订阅相关模板消息,以获取用户的订阅结果。 该方法需要传入一个对象参数,包含以下属性: 1. tmplIds(Array):需要订阅消息模板的模板 ID 列表。 2. success(Function):订阅成功的回调函数。 3. fail(Function):订阅失败的回调函数。 在用户点击订阅按钮后,我们可以调用wx.requestSubscribeMessage()方法,传入相应的模板 ID 列表,并传入成功和失败回调函数。然后,微信会向用户弹出一个订阅消息的授权弹窗,在用户确认订阅后,小程序将会收到订阅成功的回调函数,并返回订阅结果。 订阅成功的回调函数中,我们可以获取订阅成功的模板 ID 列表,以及用户选择的订阅结果。我们可以根据用户的选择,进行后续的业务逻辑,比如发送相关消息通知订阅失败的回调函数中,我们可以获取失败的模板 ID 列表以及错误信息。我们可以根据错误信息做出相应的处理,比如给出友好的提示或重新尝试订阅。 需要注意的是,订阅消息功能需要在小程序配置文件(app.json)中添加相应的权限声明,并在小程序管理后台进行模板消息的设置和配置。 通过wx.requestSubscribeMessage()方法,我们能够方便地实现小程序订阅消息功能,让用户可以及时收到相关的通知,提升用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值