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、消息是由后端發送。
最后真機測試,發送通知消息。
?