1、进入微信公众平台,选一个订阅消息模版(划线地方的字段后面都会用到)
2、然后在我们的小程序js代码中写绑定点击事件
<button bindtap="subMessage" class="sub-btn" type="primary">订阅最新活动</button>
// 页面中绑定点击事件 调用获取订阅消息权限
subMessage(){
wx.requestSubscribeMessage({
tmplIds: [this.data.template_id], // 这里放的是我们上面模版的ID
success:(res)=>{
console.log(res)
// 这里写与后端交互的代码,
// 我这里是自己的代码逻辑,我是提交到云开发数据库中的,紧参考
this.keepSubMessage(res[this.data.template_1_id])
},
fail:(err)=>{
console.log(err)
}
})
},
// 记录订阅数据
keepSubMessage(state){
wx.cloud.callFunction({
name:'subscribe-message', // 云函数名称
data:{ // 传到云函数的参数
type:'add',
openid: app.globalData.openid, // 记录当前订阅者的openid
template_id: this.data.template_id, // 模版id
state:state,
nickName: app.globalData.userData.nickName,
avatarUrl: app.globalData.userData.avatarUrl,
gender: app.globalData.userData.gender
}
}).then(res=>{
if(state=='accept'){
wx.showToast({
title: '订阅成功',
})
}
})
},
3、 这是我的云函数代码
// 云函数入口函数
exports.main = async (event, context) => {
switch (event.type){
case 'add':
return await verifyHaveMessage(event)
case 'sendIndex':
return await sendIndex(event)
case 'sendAll':
return await sendAll(event)
default:
return
}
}
// 判断是否已存在该用户订阅信息 ,因为用户可能多次点击订阅,这我都做记录
verifyHaveMessage = async (event)=>{
const message = await db.where({
openid: event.openid
}).count();
const total = message.total;
// 如果存在用户订阅数据,就更新该条数据相应字段
if(total){
return updateInfo(event);
}else{
// 不在就创建一跳
return addInfo(event);
}
}
// 添加一条订阅消息
addInfo = (event)=>{
const result = db.add({
data:{
openid:event.openid,
template_id:event.template_id,
update_date: d,
is_send_finish: false,
state:event.state,
send_count:0,
accept_count: event.state=='accept'? 1 : 0,
reject_count: event.state=='accept'? 0 : 1,
nickName:event.nickName,
avatarUrl: event.avatarUrl,
gender: event.gender
}
})
return result;
}
// 多次订阅记录
updateInfo = (event)=>{
const options = {
state:event.state,
update_date: d
}
if( event.state=='accept'){
options['accept_count'] = _.inc(1);
}else{
options['reject_count'] = _.inc(1);
}
const result = db.where({
openid:event.openid
}).update({
data:options
})
return result
}
4、下面贴下我的数据存的字段,方便理解
5、前端部分已经完结,能订阅能记录数据,下面就是如何给用户发送订阅消息,暂停下,下篇文章继续。。
(这是我自己的小程序实现,还有奖励活动奥,欢迎来访)