加载中 ...
首页 > 新闻资讯 > 小程序 正文

小程序蓝牙连接10003问题和解决方案

2019-07-31 09:54:21 来源:沈阳小程序开发 作者:沈阳软件开发

10003是微信蓝牙连接经常遇到的问题。 微信给出的文档简单地描述为连接失败,注释是连接失败。那么具体原因是什么?

21708-1P4231459435L.png

10003是微信蓝牙连接经常遇到的问题。 微信给出的官方文档简称为“连接失败”,注释为“连接失败”。然而,实际上存在许多10003存在的情况。例如,当根据deviceId连接蓝牙时,蓝牙设备未开启或异常无法连接;蓝牙设备已被占用或最后一次蓝牙连接未断开且无法连接;发生错误后,去官方社区微信寻求帮助,在社区找到满4页(40个奖金)都是对问题的反馈,但没有得到官方回复,很少有解决方案不适用于我的情况;所以,只有自己的分析。

问题描述:

1.汇海app,在成功搜索并连接蓝牙后,第一次正常收集数据;

2.下次采集如果手机蓝牙已开启,也可以正常采集;

3.但如果手机蓝牙关闭,点击收集的数据尝试连接,提示用户打开手机蓝牙;当蓝牙开启,然后连接蓝牙,然后连接将不会连接,错误是10003;

4.在后续操作无法连接蓝牙后,无论是重启小程序还是重新关闭蓝牙,都无法连接蓝牙设备。

问题地点

1.重复出现问题,按照测试提供的方法,首先测试iphone正常,三星S7edge,结果是蓝牙可以正常连接,后来测试了vivo x7plus和小米MI5,最后成功重现了问题;

2.对于微信开发社区中的10003错误找到解决方案,但是面临几十个类似的问题,几乎没有解决方案,有几个说在断开最后一个连接之前调用wx.closeBLEConnection,试试,无法解决我的问题问题;

3.由于未找到现成的解决方案,因此仅添加跟踪代码,并将日志添加到密钥方法中。发现当顶部栏中的手机蓝牙关闭时,无法在小程序中断开蓝牙连接,并报告错误(10001(不可用)当前蓝牙。适配器不可用);

4.稍后,在意外情况下,蓝牙设备的绑定关系被清除,并且重新进入蓝牙搜索页面,并且发现在这样的操作之后蓝牙连接可以成功连接。

问题修复

在上面的问题位置,(3)可以发现它不应该从最后一个蓝牙连接断开,(4)并发现重新搜索蓝牙然后连接可以解决问题;

因此,请按照以下两个方向找到解决方案:

1.由于没有断开蓝牙连接,因此在手机关机时断开蓝牙连接;但是,在蓝牙状态监视器中调用断开连接功能,并返回错误(10001(不可用)当前的蓝牙适配器不可用。使用);

2.因此,您只能考虑重新搜索蓝牙然后连接。发生10003错误后,再次搜索蓝牙,然后连接到相应的设备进行蓝牙连接;修改代码反复测试,根据日志显示,确实是10003然后,进入搜索模块,搜索指定设备再连接蓝牙,然后连接成功,此解决方案解决了问题。

wx.createBLEConnection({

deviceId: deviceId,

成功:函数(res){//连接成功

initnotifyCharacteristic(notifyCharacteristic); //指定特征值并执行数据交互

//已连接

_bthConnectStaus=BTH_STATUS_CONNECTED;

},

失败:功能(res){//连接蓝牙失败

_bthConnectStaus=BTH_STATUS_DISCONNECT;

//回调上层蓝牙连接失败

回调(res.errCode,'连接失败')

}

然后根据失败中的res.errCode判断是否为10003。

If(code==10003){//在特殊情况下需要重新搜索某些Android手机以连接蓝牙。此时,错误为10003,并执行蓝牙搜索。 (ps:可能是由于手机蓝牙在系统中关闭,连接状态无法改变。打开,下次设备无法连接下次)

Var timeId=setTimeout(function(){

stopSearchBluetooth();

回调(false,'timout')

},5000); //搜索最多5秒

searchBluetooth(function(res){

如果(res.devices===undefined || res.devices===null){

返回;

}

For(var i=0; i< res.devices.length; i ++){

如果(res.devices [i]& res.devices [i] .deviceId==deviceId){//搜索设备

Console.log('searchDeviceAndReConnect:find device and re connect');

clearTimeout(TIMEID);

stopSearchBluetooth()//停止搜索

回调(true,'find device'); //在回调函数中找到设备并连接蓝牙

打破;

}

}

},function(res){

clearTimeout(TIMEID);

stopSearchBluetooth()//停止搜索

回调(false,'searchBluetooth fail')

});

}

上面的代码提供了一个简单的过程,当连接出现10003错误时搜索蓝牙设备,然后在找到后重新连接到蓝牙。

考虑到只有部分手机有10003个错误,他们会连接蓝牙一次并报告10003,这样其他手机就会通过连接蓝牙来搜索蓝牙来减慢数据采集速度;

当然,10003,不仅报告问题,全部,当设备没有打开蓝牙时,也会报10003,而且由于添加了搜索逻辑,当设备无法打开蓝牙时提醒会慢一些(设备蓝牙不需要提醒)用户打开设备蓝牙),但此时影响不大。目前,解决它没有好主意,我稍后会研究它。

这种方法只能解决我的情况。 10003情况非常多,但基本上它可以位于最后一个蓝牙连接端。重新搜索蓝牙后,连接也基于上次未断开蓝牙连接的连接。 p>

相关问题

1.微信小程序蓝牙连接仅支持4.0,而BLE低功耗蓝牙设备具有定位功能,因此需要具备定位权限。有些手机(如vivo x7plus)需要打开手机定位功能才能搜索蓝牙设备。 “Android6.0蓝牙BLE连接,定位动态权限相关”

2.根据服务调用wx.startBluetoothDevicesDiscovery搜索蓝牙,如果无法搜索,可以删除服务并试用。我的一台测试机(在华为P6的印象中)找不到带有服务的设备,最后只能删除这些服务。然后在搜索结果中过滤

3.wx.startBluetoothDevicesDiscovery当搜索蓝牙时,大多数人都知道使用wx.onBluetoothDeviceFound,然后一些手机无法在第二次搜索onBluetoothDeviceFound回调中的所有设备在短时间内。这时,你可以试试wx.getBluetoothDevices。获取缓存的蓝牙设备,这部分缓存的蓝牙设备将不再出现在某些手机的wx.onBluetoothDeviceFound中

4.连接蓝牙后,如果在写操作期间写入失败,请检查是否设置了characterId。每次写入时都应该携带此功能值。

Android机型很多,BLE低功耗蓝牙不是很稳定,这导致了Android上蓝牙开发中的很多奇怪问题,而基于Android和IOS的微信小程序,相应也会有一些问题,IOS很好,系统软件和硬件都是单一的,但Android的问题要多得多。在开发之前,需要注意一些问题。我暂时不记得了,然后再添加

HiShop小程序工具提供多种类型的商城/商店小程序制作,可视化编辑1秒,在线生成5个步骤。通过拖动和拼接模块布局小程序商城页面,你可以看到你得到的东西,你只需要艺术家来制作一个漂亮的商场。

更多小程序开发案例,全部位于:http://www.hvihi.com/xiaocx/kaifa.html

< 汇海(www.hvihi.com)是国内知名的商城系统和商城网站建设提供商,其中汇海技术小程序系统提供小程序商城开发,小程序配送系统,微分配系统,商城系统,电子商务网站建设, 微信发行系统,小程序商城及其他多端商场和电子商务行业解决方案>

确认:这个文件和图像源网络编辑器的网站部分,如果有侵权及时通信删除。 汇海hvihi.com网站原创文章,请注明出处。

“沈阳软件公司”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与

我们联系删除或处理,客服QQ:55506560,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同

其观点或证实其内容的真实性。