Nodejs如何现实小程序消息推送?
Admin 2021-05-07 群英技术资讯 1708 次浏览
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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
本篇文章带大家用Node.js探索一下反应式编程,介绍一下在Node中应用反应式编程的方法,以及它的好处和利弊,希望对大家有所帮助!
最终效果展示xhr发起请求!DOCTYPE htmlhtml lang=en head meta charset=UTF-8 meta http-equiv=X-UA-Compatible content=IE=edge meta name=viewport content=width=device-
我们在浏览网站时,经常会看到滚动广告,那么这是怎么样实现的呢?这篇文章就给大家介绍一下jquery实现上下滚动的效果,文章中有详细的代码示例,对此感兴趣的朋友就继续往下看吧。
本文主要讲解了如何在vue中使用pdfjs预览pdf文件,这样的优势是无须让用户安装专门的软件即可实现预览,下面就看看如何实现这个需求
这篇文章主要为大家详细介绍了js实现导航栏上下动画效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
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备09006778号 域名注册商资质 粤 D3.1-20240008