微信小程序(笔记)——一次性订阅消息

原本以为这个功能节省了我要在 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

三、一次性订阅消息,每授权一次只能接收一条

这个真的是整个流程走完了才发现,一次性订阅它真的就是一次性!!如果用户没有勾选 【总是保持以上选择,不在询问】 那么就算是授权也只能收到一条消息,但是长期订阅消息只针对特定行业开放(目前长期性订阅消息向政务、医疗、交通、金融、教育等线下公共服务开放),所以普通开发者要想其他的办法了

微信小程序(笔记)——一次性订阅消息

 

 

解决方法:

可以引导用户关注公众号,在公众号发送通知

 

 

以上是我开发时候遇到的问题和解决办法,希望给大家做个参考,有问题欢迎给我留言哦~

微信小程序(笔记)——一次性订阅消息

上一篇:最新微信防封-屏蔽微信举报投诉按钮


下一篇:小程序-拨打电话