Nodejs如何现实小程序消息推送?
Admin 2021-05-07 群英技术资讯 1165 次浏览
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如何下载文件?用 axios 就行啦!简单版如下:constaxios=require('axios')constfs=require('fs')functionformatHeaders(headers){returnObject.keys(headers).reduce((header,name)=>{heade
这篇文章我们来了解JS中lastindexof方法的使用,lastindexof()用于在数组中查找元素,小编觉得挺实用的,因此分享给大家做个参考,文中的示例代码介绍得很详细,有需要的朋友可以参考,接下来就跟随小编一起了解看看吧。
你到底懂不懂JavaScript?下面本篇文章给大家整理分享12道JavaScript面试题,来做做这12道面试题试试,看看能不能全部答对!
这篇文章主要介绍了vue如何使用rem适配,帮助大家处理vue开发移动应用时的兼容性问题,感兴趣的朋友可以了解下
这篇文章给大家分享的是有关JS数据类型判断方法的内容,小编觉得挺实用的,因此分享给大家做个参考,本文给大家介绍了三种JS数据类型判断方法,接下来一起跟随小编看看吧。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008