微信小程序(筆記)——一次性訂閱消息


原本以為這個功能節省了我要在 button 上做手腳的時間,沒想到真的是坑好多

一、開發者工具調用 wx.requestSubscribeMessage 報錯

一開始開發者工具調用這個  wx.requestSubscribeMessage  這個方法就報錯,之后才發現是版本庫的問題,基礎庫 2.8.2 開始支持

解決方法:

需要在這個修改到 2.8.2 以上

 

 

 二、手機端調用 wx.requestSubscribeMessage 報錯

開發者工具使用正常,手機真機調試報錯,又去仔細看了看文檔,是手機端基礎庫版本不夠的原因,也就是微信版本太低

 

 

 

又去查文檔,關於基礎庫版本和微信版本關系,發現其實文檔也說明這一點了,是我沒get到這個點

基礎庫版本官方文檔:https://developers.weixin.qq.com/miniprogram/dev/framework/client-lib/version.html

 

訂閱消息官方文檔:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/subscribe-message/wx.requestSubscribeMessage.html

 

 解決方法:

我的辦法是先用wx.getSystemInfo 方法獲取到手機信息,在直接對比基礎庫版本,官方有比較版本的方法

// 獲取手機微信版本
    wx.getSystemInfo({
      success: function(res) {
        // 返回手機型號、微信版本、基礎庫版本等信息
        // 判斷基礎庫版本是否到 2.8.2
        if (res.errMsg == "getSystemInfo:ok" && that.compareVersion(res.SDKVersion, '2.8.2') >= 0) {
          // 支持訂閱消息授權
          // 執行你的功能
          console.log('支持')
        } else {
          // 不支持訂閱消息授權
          console.log('不支持')
          wx.showModal({
            title: '提示',
            content: '當前微信版本過低,無法使用該功能,請升級到最新微信版本后重試。'
          })
        }
      }
    })

 

比較版本方法

 

compareVersion(v1, v2) {
    // 比較微信版本
    v1 = v1.split('.')
    v2 = v2.split('.')
    var len = Math.max(v1.length, v2.length)
    while (v1.length < len) {
      v1.push('0')
    }
    while (v2.length < len) {
      v2.push('0')
    }
    for (var i = 0; i < len; i++) {
      var num1 = parseInt(v1[i])
      var num2 = parseInt(v2[i])
      if (num1 > num2) {
        // v1 版本大於 v2
        return 1
      } else if (num1 < num2) {
        // v1 版本小於 v2
        return -1
      }
    }
    // v1 版本等於 v2
    return 0
  },

  

官方文檔:https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html

三、一次性訂閱消息,每授權一次只能接收一條

這個真的是整個流程走完了才發現,一次性訂閱它真的就是一次性!!如果用戶沒有勾選 【總是保持以上選擇,不在詢問】 那么就算是授權也只能收到一條消息,但是長期訂閱消息只針對特定行業開放(目前長期性訂閱消息向政務、醫療、交通、金融、教育等線下公共服務開放),所以普通開發者要想其他的辦法了

 

 

解決方法:

可以引導用戶關注公眾號,在公眾號發送通知

 

 

以上是我開發時候遇到的問題和解決辦法,希望給大家做個參考,有問題歡迎給我留言哦~


免責聲明!

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



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