原本以为这个功能节省了我要在 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
解决方法:
我的办法是先用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
三、一次性订阅消息,每授权一次只能接收一条
这个真的是整个流程走完了才发现,一次性订阅它真的就是一次性!!如果用户没有勾选 【总是保持以上选择,不在询问】 那么就算是授权也只能收到一条消息,但是长期订阅消息只针对特定行业开放(目前长期性订阅消息向政务、医疗、交通、金融、教育等线下公共服务开放),所以普通开发者要想其他的办法了
解决方法:
可以引导用户关注公众号,在公众号发送通知
以上是我开发时候遇到的问题和解决办法,希望给大家做个参考,有问题欢迎给我留言哦~