Nodejs如何现实小程序消息推送?
Admin 2021-05-07 群英技术资讯 1813 次浏览
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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
什么是对象?为什么需要对象?创建对象的三种方式利用对象字面量创建对象利用new关键字创建对象利用构造函数创建对象new关键字的执行过程对象属性的增删改查(和py的字典类
本文主要介绍了TypeScript数据类型,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
第一步用自带的包管理先删除一次yumremovenodejsnpm-y手动删除残留进入/usr/local/lib删除所有node和node_modules文件夹进入/usr/local/include删除所有node和node_modules文件夹进入/usr/local/bin删除node的可执行文件 安装nodejs官网最新的xz
这篇文章小编给大家分享的是热重载的内容,一些朋友可能对于热重载不是很了解,对此下文介绍了热重载及使用Node.js如何实现热重载页面的方法,文中示例介绍的很详细,感兴趣的朋友可以了解看看,下面让我们一起来学习一下吧!
vue如何实现登陆跳转的功能?现在很多网站和APP都需要注册登录使用,因此我们常常会需要实现登陆跳转的功能,下面就给大家分享下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