說明:官方文檔(https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/subscribe-message.html)很詳細,在此簡單記錄下
需求:雖說是一次性訂閱,但前台可以通過bindtop點擊觸發微信訂閱api收集用用戶點擊訂閱次數。方便后台可以發更多的消息
第一步,定義全局模板ID 和 收集方法
// 統一模板ID export const COMPLATEMESSAGE = 'agFxPZurLwE5CYrFTGTWcgXuknS06sVWfVdUdQaDhcF' export function onSubscribe(templateIds, e){ return new Promise((resolve, reject) => { wx.requestSubscribeMessage({ tmplIds: [templateIds], success(res) { console.log('獲取訂閱消息權限',res) // 申請訂閱成功 if (res.errMsg === 'requestSubscribeMessage:ok') { resolve(true) } }, fail (err){ reject(false) console.log(err) } }); }) }
第二步:頁面點擊收集
import { execteGet,onSubscribe, COMPLATEMESSAGE, } from '@/utils/require' goDetail: async function(e){ // 頁面有跳轉做點擊同步,防止用戶未允許頁面跳走 await onSubscribe(COMPLATEMESSAGE) wx.navigateBack({ delta: 1, fail(ex){ //對於跳轉到帶有底部導航欄頁面的要用switchTab wx.switchTab({ url: '/pages/group/groupage/main', }) } }) } changeState: async function(e){ // 頁面無跳轉點擊做異步,requestSubscribeMessage收集方法有一秒延時體驗不好 onSubscribe(COMPLATEMESSAGE) }
requestSubscribeMessage
方法使用時最好處理下兼容,不然彈框沒有默認允許勾,一直彈。或者微信開放平台設置基礎版本 > 2.9.2