原本以为这个功能节省了我要在 button 上做手脚的时间,没想到真的是坑好多
一、开发者工具调用 wx.requestSubscribeMessage 报错
一开始开发者工具调用这个 wx.requestSubscribeMessage 这个方法就报错,之后才发现是版本库的问题,基础库 2.8.2 开始支持
解决方法:
需要在这个修改到 2.8.2 以上
二、手机端调用 wx.requestSubscribeMessage 报错
开发者工具使用正常,手机真机调试报错,又去仔细看了看文档,是手机端基础库版本不够的原因,也就是微信版本太低
又去查文档,关于基础库版本和微信版本关系,发现其实文档也说明这一点了,是我没get到这个点
解决方法:
我的办法是先用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
},
三、一次性订阅消息,每授权一次只能接收一条
这个真的是整个流程走完了才发现,一次性订阅它真的就是一次性!!如果用户没有勾选 【总是保持以上选择,不在询问】 那么就算是授权也只能收到一条消息,但是长期订阅消息只针对特定行业开放(目前长期性订阅消息向政务、医疗、交通、金融、教育等线下公共服务开放),所以普通开发者要想其他的办法了
解决方法:
可以引导用户关注公众号,在公众号发送通知
以上是我开发时候遇到的问题和解决办法,希望给大家做个参考,有问题欢迎给我留言哦~