美文网首页小程序低功耗蓝牙
微信小程序低功耗蓝牙开发那些坑(一)

微信小程序低功耗蓝牙开发那些坑(一)

作者: 唐植超 | 来源:发表于2019-03-19 13:30 被阅读0次



    前言

        本人上个月换工作,来到一个新公司做技术主管,成功接手了一个很大的烂摊子,无力吐槽.面临的第一个问题,就是公司的项目刚刚上线,但是蓝牙和微信之间的连接,还经常有连接不上的情况,没有办法,我只能优先解决这个问题,虽然我从来没有做过小程序.

        测试了一下我们的产品,发现蓝牙经常会连接不上,而且搜索很慢.于是乎,我硬着头皮去啃他原来的的源码.本来以为不会很麻烦,结果发现,掉进了一个很大的坑里.下面我分几篇文章来描述一下我重构时微信小程序功耗蓝牙的坑:

    1.蓝牙的方法都是异步回调方法,不能同步执行

        这不算微信小程序的坑,算是这个项目的坑,我看到我们项目代码:

    wx.closeBluetoothAdapter()// 关闭蓝牙模块
    wx.openBluetoothAdapter({//初始化 蓝牙模块 成功 和 失败的回调
            success: res => {
                 console.log('初始化蓝牙成功' + res)
                    //省略其他代码

         },
         fail: err => {
            console.log("开启模块失败);    
    }

     })    

    因为业务逻辑,我们需要先关闭蓝牙蓝牙模块,然后再重新开启,而这里wx.closeBluetoothAdapter 本身就是一个异步函数,我们必须等他关闭完成到success 方法才能够执行方法,所以我首先认为这是我们经常连接不上的原因.就改了这段代码,改后如下:

    //关闭当前的蓝牙模块
     wx.closeBluetoothAdapter({
         success: (res) => {
             console.log("关闭蓝牙模块成功", res);
             //重新打开蓝牙模块
             wx.openBluetoothAdapter({ //初始化 蓝牙模块 成功 和 失败的回调
              success: res => {
                             console.log('初始化蓝牙成功', res)
                }, fail: err => {
                        console.log('初始化蓝牙是否开启:', err);
                }, complete: function(res) {
                         console.log('初始化蓝牙执行完成:', res) }
           })
     }, fail: (err) => {
          console.log("关闭蓝牙模块出错", err);
     },
     complete: (res) => {
     console.log("关闭蓝牙模块完成的", res); // ignore
    },   
    });

    改完以后,蓝牙连不上的问题确实改善了很多,我当时也是满心欢喜的提交了代码,拿着机器给领导演示了一下,感觉搞定了.

    但是马上就有一大波的坑正在接近,下篇文章继续

    相关文章

      网友评论

        本文标题:微信小程序低功耗蓝牙开发那些坑(一)

        本文链接:https://www.haomeiwen.com/subject/tjegmqtx.html