您好,登录后才能下订单哦!
密码登录
            
            
            
            
        登录注册
            
            
            
        点击 登录注册 即表示同意《亿速云用户服务条款》
        今天就跟大家聊聊有关利用Nodejs怎么实现一个微信小程序消息推送功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
需要用到上一步获取的模板Id
// 小程序
<Text className='rights-buy' onClick={this.messageSubmit}>
 入驻申请
</Text>
// 入驻申请消息订阅
messageSubmit = () => {
 Taro.requestSubscribeMessage({
  tmplIds: ['SuGMwqyYY9cocuP-LxfElcM3a7ITaF34lKNux6EaE9'],
  success: (res) => {
   // 调用服务端接口,在数据库写入一条订阅记录
   // this.subscribeDeal()
  }
 })
}推送一般有两种
手动触发、
还有就是订阅消息后,达到某个条件自动触发推送、
对于第一种情况,就直接调用微信的推送接口就好了。第二中情况稍微麻烦一点,可以加一个定时的任务,或者使用相关的队列库、等条件符合了再触发、
需要注意的地方
发送推送的时候需要用户的openid,以及模板id。具体的推送内容字段,在第一步模板详情里面可以查看、
调用微信推送的接口的时候需要access_token,最好缓存一下,频繁调用会有失效的问题、
获取access_token并缓存
async getAccessToken () {
 const { appId, appSecert, host } = this.app.config.idolWxAConfig;
 return new Promise(async (resolve) => {
  const currentTime = new Date().getTime()
  const redisToken = await this.app.redis.get('wxtoken').get('token') || '{access_token: "", expries_time: 0}'
  const accessTokenJson = JSON.parse(redisToken)
  if (accessTokenJson.access_token === '' || accessTokenJson.expries_time < currentTime) {
   const res = await this.ctx.curl(`${host}/cgi-bin/token?appid=${appId}&secret=${appSecert}&grant_type=client_credential`, { dataType: 'json' })
   if (res.data) {
    accessTokenJson.access_token = res.data.access_token
    accessTokenJson.expries_time = new Date().getTime() + (parseInt(res.data.expires_in) - 200) * 1000
    await this.app.redis.get('wxtoken').set('token', JSON.stringify(accessTokenJson))
    resolve(accessTokenJson)
   }
  } else {
   resolve(accessTokenJson)
  }
 })
}向微信发送推送请求
async sendSubscribeMsg (openid) {
 let requestData = {
  "touser": `${openid}`,
  "template_id": "SuGMwqyYY9cocuP-LxfElcM3a7ITaF34lKNux6EaE9",
  "page": `/pages/certification/index`,
  "data": {
    "phrase2": {
     "value": `审核通过`
    },
    "thing3": {
     "value": `您的申请已经审核通过`
    }
  }
 }
 const { host } = this.app.config.idolWxAConfig;
 // 获取access_toekn
 const tokenJson = await this.ctx.service.wx.getAccessToken()
 const res = await this.ctx.curl(`${host}/cgi-bin/message/subscribe/send?access_token=${tokenJson.access_token}
 `, {
  method: 'POST',
  contentType: 'json',
  data: requestData,
  dataType: 'json'
 });
 if (res.data.errmsg === 'ok') {
  console.log('========推送成功========')
  // TODO
 } else {
  console.log('========推送失败========')
  // TODO
 }
}看完上述内容,你们对利用Nodejs怎么实现一个微信小程序消息推送功能有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。