Nodejs 微信小程序消息推送的实现
网络编程 2021-07-04 14:07www.168986.cn编程入门
这篇文章主要介绍了Nodejs 微信小程序消息推送的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们狼蚁网站SEO优化随着长沙网络推广来一起学习学习吧
选择或创建订阅消息模板
登录到微信小程序里面找到功能->订阅消息。可以在公共模板库里选择需要的模板,如果没有找到自己需要的也可以自己创建然后等待审核、
选择完模板查看详情会得到模板ID,以及发送推送时需要的字段、
小程序发送订阅的请求
需要用到上一步获取的模板Id
// 小程序 <Text className='rights-buy' onClick={this.messageSubmit}> 入驻申请 </Text> // 入驻申请消息订阅 messageSubmit = () => { Taro.requestSubscribeMessage({ tmplIds: ['SuGMwqyYY9cocuP-LxfElcM3a7ITaF34lKNux6EaE9'], suess: (res) => { // 调用服务端接口,在数据库写入一条订阅记录 // this.subscribeDeal() } }) }
服务端发起推送
推送一般有两种
- 手动触发、
- 还有就是订阅消息后,达到某个条件自动触发推送、
对于第一种情况,就直接调用微信的推送接口就好了。第二中情况稍微麻烦一点,可以加一个定时的任务,或者使用相关的队列库、等条件符合了再触发、
需要注意的地方
- 发送推送的时候需要用户的openid,以及模板id。具体的推送内容字段,在第一步模板详情里面可以查看、
- 调用微信推送的接口的时候需要aess_token,最好缓存一下,频繁调用会有失效的问题、
获取aess_token并缓存
async getAessToken () { 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') || '{aess_token: "", expries_time: 0}' const aessTokenJson = JSON.parse(redisToken) if (aessTokenJson.aess_token === '' || aessTokenJson.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) { aessTokenJson.aess_token = res.data.aess_token aessTokenJson.expries_time = new Date().getTime() + (parseInt(res.data.expires_in) - 200) * 1000 await this.app.redis.get('wxtoken').set('token', JSON.stringify(aessTokenJson)) resolve(aessTokenJson) } } else { resolve(aessTokenJson) } }) }
向微信发送推送请求
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; // 获取aess_toekn const tokenJson = await this.ctx.service.wx.getAessToken() const res = await this.ctx.curl(`${host}/cgi-bin/message/subscribe/send?aess_token=${tokenJson.aess_token} `, { method: 'POST', contentType: 'json', data: requestData, dataType: 'json' }); if (res.data.errmsg === 'ok') { console.log('========推送成功========') // TODO } else { console.log('========推送失败========') // TODO } }
到此这篇关于Nodejs 微信小程序消息推送的实现的文章就介绍到这了,更多相关Nodejs小程序消息推送内容请搜索狼蚁SEO以前的文章或继续浏览狼蚁网站SEO优化的相关文章希望大家以后多多支持狼蚁SEO!
上一篇:Vue实现图书管理案例
下一篇:浅析JavaScript中的事件委托机制跟深浅拷贝
编程语言
- 机械手焊接机器人编程 机械手焊接设备编程
- vb数据库编程实例,vb做数据库
- tiobe世界编程语言排行榜,全球编程语言排行
- 成都java编程培训 成都it编程培训中心
- 编程基础培训,编程基础知识培训
- flash游戏编程基础教程,flash游戏开发教程
- 不会英语能学编程吗 不会英语可以学程序员吗
- 爱心代码编程C语言 爱心代码编程c语言公式
- c语言编程学习入门 c语言编程快速入门
- 西门子plc编程培训 西门子plc编程培训班
- 哪里可以学编程 台州哪里可以学编程
- 少儿编程哪个好 少儿编程哪个品牌好
- 编程是什么意思,图形编程是什么意思
- c语言编程软件下载,c语言编程软件在哪下载
- java编程软件下载,java编程下载手机版
- ug编程培训学校,ug编程培训教程