Nodejs如何现实小程序消息推送?
Admin 2021-05-07 群英技术资讯 2327 次浏览
Nodejs如何现实小程序消息推送?这篇文章主要给大家介绍基于Nodejs的微信小程序消息推送的实现,文本代码具有一定的借鉴价值,有需要的朋友可以参考参考,下面就跟随小编一起来了解一下吧。
登录到微信小程序里面找到功能->订阅消息。可以在公共模板库里选择需要的模板,如果没有找到自己需要的也可以自己创建然后等待审核、选择完模板查看详情会得到模板ID,以及发送推送时需要的字段、

需要用到上一步获取的模板Id
// 小程序
<Text className='rights-buy' onClick={this.messageSubmit}>
入驻申请
</Text>
// 入驻申请消息订阅
messageSubmit = () => {
Taro.requestSubscribeMessage({
tmplIds: ['SuGMwqyYY9cocuP-LxfElcM3a7ITaF34lKNux6EaE9'],
success: (res) => {
// 调用服务端接口,在数据库写入一条订阅记录
// this.subscribeDeal()
}
})
}
推送一般有两种
对于第一种情况,就直接调用微信的推送接口就好了。第二中情况稍微麻烦一点,可以加一个定时的任务,或者使用相关的队列库、等条件符合了再触发、
需要注意的地方
获取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实现小程序消息推送的介绍,希望对大家学习有帮助,想要了解更多Nodejs的相关内容大家可以继续关注其他文章。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
匹配对象。如果有省略号,对象可以有更多的属性。只检测自己的属性(Object.keys),忽略原型中的属性。对象语法支持特殊识别属性,快速属性,属性不支持尾逗号。
这篇文章主要介绍了Vue.$set 失效的坑 问题发现及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
这篇文章主要介绍了js前端解决跨域的八种实现方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
这篇文章主要介绍了Vite比Vue CLI快在哪里,帮助大家更好的理解和使用vue,感兴趣的朋友可以了解下
这篇文章主要介绍了事件冒泡、事件捕获和事件委托,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008