1、在小程序官网订阅消息选用或创建消息模板获取模板ID可多个
如图:
2、微信小程序前端页面发送请求订阅权限
请求模板id的权限可以是一个可以是多个,用户同意订阅,获取code传递给后端——后端拿到code生成唯一的openid用于发送订阅消息
注意:这里用户拒绝了订阅消息我也传递了code但是并不能发送给用户消息(避免打扰),后续客户如果手动开启订阅消息即可接收不需重新获取code
前端请求权限部分代码:
wx.requestSubscribeMessage({
tmplIds: [
'模板id1',
'模板id2',
'模板id3'
],
success: (res) => {
if (res['模板id'] == 'accept') {
console.log('用户同意订阅');
this.getCode(); // 同意后获取code
} else {
console.log('用户拒绝订阅');
this.getCode();//同样把code给到后端避免后面开启通知拿不code
}
},
fail: (err) => {
console.error('订阅失败:', err);
}
});
//获取code调用接口传给后端后端生成openid
getCode() {
wx.login({
success: (loginRes) => {
console.log('获取code:', loginRes.code);
// 将code发送到后端处理
const params = {
code:loginRes.code,
userId:uni.getStorageSync('user_id'),
}
// 将code发送到后端处理
this.$http.get(this.sendCode, {params:params}).then(res => {
console.log('codegei后端后',res);
})
},
fail: (err) => {
console.error('登录失败:', err);
}
});
},
后端发送订阅消息及跳转路径
// 示例代码(云函数或服务端调用)
const result = await cloud.openapi.subscribeMessage.send({
touser: '用户openid',
templateId: '模板ID',
page: 'pages/login/login', // 这里填写登录页面的路径
data: {
// 模板参数...
}
});
注意:
1、在 app.json
的 pages
字段中,需包含登录页的路径配置(如 "pages/login/login"
),否则跳转会失败
2、若需要带参数跳转:若需传递参数(如来源标识),可在路径中添加,例如 pages/login/login?from=notification
3、消息是由后端发送。
最后真机测试,发送通知消息。