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

原本以为这个功能节省了我要在 button 上做手脚的时间,没想到真的是坑好多

一、开发者工具调用 wx.requestSubscribeMessage 报错

一开始开发者工具调用这个  wx.requestSubscribeMessage  这个方法就报错,之后才发现是版本库的问题,基础库 2.8.2 开始支持

e12aea09bcaa518f7c0dafd7a323062e.png

解决方法:

需要在这个修改到 2.8.2 以上

f059cab6f601d484be78f7296f112b00.png

二、手机端调用 wx.requestSubscribeMessage 报错

开发者工具使用正常,手机真机调试报错,又去仔细看了看文档,是手机端基础库版本不够的原因,也就是微信版本太低

11412b0aed3934825df9175cd16c6311.png

又去查文档,关于基础库版本和微信版本关系,发现其实文档也说明这一点了,是我没get到这个点

775d57bfc706f120019a96674c70ed08.png

a250c2b821516b94f5af36804c083c77.png

解决方法:

我的办法是先用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

},

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

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

bbb97d26d2a9f3cde992382ccbc0b229.png

解决方法:

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值