调用获取位置api后-初始化蓝牙模块-启动扫描-扫描回调到新设备-停止扫描关闭模快第三次就没回调了?
发布于 6 年前 作者 chenchao 3031 次浏览 来自 官方Issues

现在复现了  建议大家 wx.getLocation 和蓝牙扫描相关函数 不要一起用到 慎用!!! 不然各种扫不到 各种坑!!!

// 安卓机会这样 执行三次后就没回调了  去掉获取位置api 则会有5次回调 第6次会没回调(这个是由于安卓系统30秒内限制了只能5次扫描)// 但是为什么 加了获取位置api后 执行到第三次后就一直获取不到回调了呢?

// 代码片段
wx.getLocation({
  success: () => {
    wx.openBluetoothAdapter({
      success: () => {
        console.log('蓝牙模块初始化成功')
        wx.startBluetoothDevicesDiscovery({
          // services: ['08D9'],
          success: () => {
            console.log('蓝牙扫描启动成功')
            wx.onBluetoothDeviceFound((res) => {
              console.log(res)
              wx.stopBluetoothDevicesDiscovery({
                success: () => {
                  console.log('停止蓝牙扫描成功')
                  wx.closeBluetoothAdapter({
                    success: () => {
                      console.log('关闭蓝牙模块成功')
                    },
                    fail: (res) => {
                      console.log('关闭蓝牙模块失败', res)
                    }
                  })
                },
                fail: (res) => {
                  console.log('停止蓝牙扫描失败', res)
                }
              })
            })
          },
          fail: async (res) => {
            console.log('蓝牙扫描启动失败', res)
          }
        })

      },
      fail: (res) => {
        console.log('蓝牙模块初始化失败', res)
      }
    })
  }
})

获取位置api(wx.getLocation) 和 微信蓝牙扫描相关(wx.onBluetoothDeviceFound)一起用 就有奇怪的问题

这个东西坑死我了 导致蓝牙各种扫不到 之前都是好的 项目里加了位置上报 就各种扫不到 去掉就好了 一直找不到头绪

现在复现了 建议大家 wx.getLocation 和蓝牙相关函数 不要一起用到 慎用!!! 不然各种坑!!!

2 回复

请提供能复现问题的简单代码片段https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html

再重现一次,在手机微信那里上传下日志: 我->设置->帮助与反馈右上角有个上报日志的入口,提供一下微信号,复现问题的详细时间点

获取位置api(wx.getLocation) 和 微信蓝牙扫描相关(wx.onBluetoothDeviceFound)一起用 就有奇怪的问题 第三次就没回调 不调用 wx.getLocation 就没这问题
回到顶部