小程序 訂閱消息 wx.requestSubscribeMessage()


前端通過wx.requestSubscribeMessage(Object object)調起客戶端小程序訂閱消息界面,返回用戶訂閱消息的操作結果。用戶勾選訂閱面板中“總是保持以上選擇,不再詢問”時,模板消息會被添加到用戶的小程序設置頁,通過wx.getSetting接口可以獲取用戶對相關模板消息的訂閱狀態。

訂閱消息:

export default{
          data() {
              return {
                        subscribeMes: true,
              }
          }
}

methods:{
      talkOrAsk() {
      const that = this;
      if (compareVersion(global.globalData.SDKVersion, "2.8.2") >= 0) {
        wx.requestSubscribeMessage({
          tmplIds: ["tml8xm_ZUAVzUgepzU-2zyyy2DXkfZnwS04OcMbVNm4"],//需要訂閱的消息模板的id的集合,一次調用最多可訂閱3條消息
          // 消息模板id在[微信公眾平台(mp.weixin.qq.com)-功能-訂閱消息]中配置
          success(res) { // 接口調用成功的回調函數
            console.log(res,'compareVersion')
            if (
              res["tml8xm_ZUAVzUgepzU-2zyyy2DXkfZnwS04OcMbVNm4"] == "accept"
              // Object res   [TEMPLATE_ID]是動態的鍵,即模板id,值包括'accept'、'reject'、'ban'。
              // 'accept'表示用戶同意訂閱該條id對應的模板消息,'reject'表示用戶拒絕訂閱該條id對應的模板消息,'ban'表示已被后台封禁。
            ) {
              if (that.subscribeMes) {
                wx.showToast({
                  title: "訂閱成功!",
                  duration: 1500,
                  icon: "success",
                  success(data) {
                    that.subscribeMes = false;
                  }
                });
              }
              mpvue.navigateTo({
                url: `/pages/chat/main`
              });
            } else {
              mpvue.navigateTo({
                url: `/pages/chat/main`
              });
            }
          },
          fail(res) { // 接口調用失敗的回調函數
            if (res.errCode === 20004) {
              wx.showModal({
                title: "溫馨提示",
                content: "您已拒絕授權,將無法在微信中收到回復通知!",
                showCancel: false,
                success: res => {
                  if (res.confirm) {
                    mpvue.navigateTo({
                      url: `/pages/chat/main`
                    });
                  }
                }
              });
            }
          }
        });
      } else {
        wx.showModal({
          title: "溫馨提示",
          content: "您的微信版本過低,將無法在微信中收到回復通知!",
          showCancel: false,
          success: res => {
            if (res.confirm) {
              mpvue.navigateTo({
                url: `/pages/chat/main`
              });
            }
          }
        });
      }
    },
}

 

兼容問題:

版本號兼容(wx.getSystemInfo / wx.getSystemInfoSync 可以獲取當前小程序運行的基本庫的版本號  SDKVersion),

function compareVersion(v1, v2) {
  v1 = v1.split('.')
  v2 = v2.split('.')
  const len = Math.max(v1.length, v2.length)

  while (v1.length < len) {
    v1.push('0')
  }
  while (v2.length < len) {
    v2.push('0')
  }

  for (let i = 0; i < len; i++) {
    const num1 = parseInt(v1[i])
    const num2 = parseInt(v2[i])

    if (num1 > num2) {
      return 1
    } else if (num1 < num2) {
      return -1
    }
  }

  return 0
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM