代码自用自取,复制粘贴直接使用,喜欢的话可以查看博主其它文章,贡献一丢丢的浏览量,感激不尽。
我们在进行微信小程序项目开发时,尤其商城类小程序,很需要订阅消息的辅助,订阅消息就是将模板内容实例化直接发送至指定手机微信上。
比如我们在进行商城类小程序开发时,用户购买了商品,商家需要收到是谁买了商品,买了什么商城,什么时候买的,收货地址是哪里等等信息。
虽然这些可以去数据库查看,但是甚为不便,而且也不能实时接收。微信小程序目前不支持APP的推送类功能,这个订阅消息就是最接近推送的功能了。
首先第一步,我们去微信公众平台(https://mp.weixin.qq.com/),登录自己的账号,在左侧功能栏中找到订阅消息模块
我们点击添加,选择适合需求的模板。
然后回到编辑器中。
首先我们先编写云函数:
const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => {
try {
const result = await cloud.openapi.subscribeMessage.send({
touser: event.openid, //要发送用户的openid
page: 'pages/demo/demo', //用户通过消息通知点击进入小程序的页面
lang: 'zh_CN', //进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN
data: {
//要发送的数据,这里需要注意的事项,我在下面说
thing1:{
value:event.title
},
time3:{
value:event.time
}
},
templateId: '模板ID', //订阅消息模板ID
miniprogramState: 'formal' //跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版
})
return result
} catch (err) {
return err
}
}
同学们直接套用上面这个模板即可。
然后要改一下package.json的内容:
将框选的内容添加进去,然后上传并部署即可。
之后我们写page页的文件。
WXML中我们用按钮作为媒介。
<button bindtap="sendNew" type="primary">点我</button>
JS的函数编写如下:
sendNew(res){
var that = this
var time = util.formatTime(new Date());
wx.requestSubscribeMessage({
tmplIds: ['模板ID'],
success(res){
wx.cloud.callFunction({
name:'subscribe',
data:{
openid:'需要接收的微信的openid',
title:'二手物品',
time:time
},
success(res){
console.log('成功',res);
},
fail(res){
console.log('失败',res);
}
})
}
})
},
首先我们需要给用户一个提示框,让他授权之后,我们才能使用订阅消息的功能。这个 wx.requestSubscribeMessage就是弹出授权提示框的功能。模板ID在当时添加订阅消息模板那里有。
这里面很关键的细节就是data的值,我们先在我的模板里,点击详情
这里键值对要对应上,我的模板的key是thing1和time3,所以我云函数里的data是写的thing1和time3,key值是从page页的JS函数中传过来的,这个名字可以随意,但是不要写错,是event.xxx。还有一点是大部分人应该都知道怎么获取用户的openid,如果不知道,可以去我之前的博客看,有讲过(https://blog.csdn.net/m0_46171043/article/details/107452518)。
收到的效果如下:
有什么问题可以联系QQ:505417246
关注下面微信公众号,可以领取微信小程序、Vue、TypeScript、前端、uni-app、全栈、Nodejs、Python等实战学习资料