微信小程序蓝牙连接部分Android14调用wx.setBLEMTU协商低功耗最大传输单元失败解决方案(部分安卓14设置超过23就会报错)

1.解决方案的核心内容:第一次设置失败不要管,在complate函数里面继续往下连接,然后设置一个定时器每1秒钟在重新设置一次,肯定会成功的!!!!!!!!!!!!!!!!

2.参考代码:

javascript 复制代码
			/*开启监听蓝牙传值*/
			notifyEquip() {
				let _ = this;
				console.log('*************************')
				if (uni.getSystemInfoSync().platform === 'android') {
					uni.setBLEMTU({
						deviceId: _.deviceId, // 设备ID,在【4】里获取到
						mtu: 512, // 服务UUID,在【6】里能获取到
						success(res) {
							console.log('设置mtu成功')
							wx.getBLEMTU({
							  deviceId: _.deviceId,
							  writeType: 'write',
							  success (res) {
							    console.log(res)
							  }
							})
							_.notifyBLECharacter()
						},
						fail(err) {
							console.error(err)
							_.setAndroidMTU() // 重要代码如果失败继续往下连接然后重复设置
						}
					})
				} else {
					_.notifyBLECharacter()
				}
			},
			/*处理设置失败安卓协商低功耗最大传输单元*/
			setAndroidMTU() {
				let _ = this;
				console.log('处理安卓协商低功耗最大传输单元失败的方法')
				_.notifyBLECharacter()
				_.mtuTimer = setInterval(() =>{
					console.log('开始循环设置MTU值')
					uni.setBLEMTU({
						deviceId: _.deviceId, // 设备ID,在【4】里获取到
						mtu: 512, // 服务UUID,在【6】里能获取到
						success(res) {
							console.log('设置mtu成功')
						},
						fail(err) {
							console.error(err)
						},
						complete() {
							wx.getBLEMTU({
								deviceId: _.deviceId,
								writeType: 'write',
								success(res) {
									console.log(res)
									clearInterval(_.mtuTimer)
									_.mtuTimer = null;
								}
							})
						}
					})
				},1500)
			},

3.基本上设置一两次,虽然设置还是显示设置失败但是wx.getBLEMTU里面查到的低功耗最大传输单元会比23大,我这边显示的是517

相关推荐
万少2 分钟前
端云一体 一天开发的元服务-奇趣故事匣经验分享
前端·ai编程·harmonyos
WindrunnerMax4 分钟前
从零实现富文本编辑器#11-Immutable状态维护与增量渲染
前端·架构·前端框架
不想秃头的程序员6 分钟前
Vue3 封装 Axios 实战:从基础到生产级,新手也能秒上手
前端·javascript·面试
说私域8 分钟前
日本零售精髓赋能下 链动2+1模式驱动新零售本质回归与发展格局研究
人工智能·小程序·数据挖掘·回归·流量运营·零售·私域运营
程序媛徐师姐8 分钟前
Java基于微信小程序的模拟考试系统,附源码+文档说明
java·微信小程序·java模拟考试系统小程序·模拟考试微信小程序·模拟考试系统小程序·模拟考试小程序·java模拟考试小程序
爱装代码的小瓶子16 分钟前
【C++与Linux基础】进程间通讯方式:匿名管道
android·c++·后端
大尚来也17 分钟前
微信小程序开发费用全解析:从SaaS到定制的多元选择
微信小程序
数研小生20 分钟前
亚马逊商品列表API详解
前端·数据库·python·pandas
你听得到1121 分钟前
我彻底搞懂了 SSE,原来流式响应效果还能这么玩的?(附 JS/Dart 双端实战)
前端·面试·github
不倒翁玩偶22 分钟前
npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
前端·npm·node.js