uni-app ios微信小程序低功耗蓝牙开发连接设备成功后弹出蓝牙配对请求

发布于 1周前 作者 yibo5220 来自 Uni-App

uni-app ios微信小程序低功耗蓝牙开发连接设备成功后弹出蓝牙配对请求

代码示例

getBLEDeviceServices() {
    let that = this
    console.log('获取设备服务');
    uni.getBLEDeviceServices({
        deviceId: that.deviceId,
        success: res => {
            console.log('获取设备服务成功');
            let services = res.services.filter(item => {return (item.uuid === bleServerUUID || item.uuid === omAServerUUID || item.uuid === omCServerUUID);})
            for (let i = 0; i < services.length; i++) {
                if (services[i].isPrimary) {
                    let uuid = services[i].uuid
                    that.getBLEDeviceCharacteristics(uuid)
                }
            },
        },
    }),
    // 获取设备特征值
    getBLEDeviceCharacteristics(serviceID) {
        let that = this
        console.log('获取设备特征值');
        uni.getBLEDeviceCharacteristics({
            deviceId: that.deviceId,
            serviceId: serviceID,
            success: res => {
                console.log('获取设备特征值成功');
                console.log(res.characteristics, 8888);
                console.log(this.deviceId, 9999);
                const characteristics = res.characteristics;
                for (let i = 0; i < characteristics.length; i++) {
                    let item = characteristics[i]
                    // 该特征值是否支持 notify或indicate 操作
                    if (item.uuid == '000036F6-0000-1000-8000-00805F9B34FB') {
                        readData = {
                            deviceId: that.deviceId,
                            serviceID: serviceID,
                            characteristicID: item.uuid
                        }
                        console.log('开启notify');
                        that.notifyBLECharacteristicValueChange()
                    }
                    // 该特征值是否支持 write 操作
                    if (item.uuid == '000036F5-0000-1000-8000-00805F9B34FB') {
                        writeData = {
                            deviceId: that.deviceId,
                            serviceID: serviceID,
                            characteristicID: item.uuid
                        }
                        bleControl.connectStateListen(BLUE_STATE.WRITEREADY);
                    }
                }
            }
        })
    }

到uni.getBLEDeviceCharacteristics 成功后弹出蓝牙配对请求

图片


1 回复

在处理uni-app中的iOS微信小程序低功耗蓝牙开发时,成功连接设备后弹出蓝牙配对请求这一场景,我们通常需要结合微信小程序的蓝牙API来完成。以下是一个简要的代码示例,展示如何在连接成功后处理蓝牙设备的配对请求。

首先,确保你的uni-app项目已经配置了蓝牙权限,并在manifest.json中启用了微信小程序的相关设置。

1. 初始化蓝牙适配器

在页面的onLoadonReady生命周期函数中初始化蓝牙适配器:

uni.openBluetoothAdapter({
  success: function (res) {
    console.log('蓝牙适配器初始化成功', res)
    // 开始发现周围的蓝牙设备
    uni.startBluetoothDevicesDiscovery({
      allowDuplicatesKey: false,
      success: function (res) {
        console.log('开始搜索蓝牙设备', res)
      }
    });
  },
  fail: function (err) {
    console.error('蓝牙适配器初始化失败', err)
  }
});

2. 连接蓝牙设备

假设你已经获取到了设备的UUID,并尝试连接:

uni.createBLEConnection({
  deviceId: deviceUUID, // 设备UUID
  success: function (res) {
    console.log('蓝牙设备连接成功', res)
    // 连接成功后尝试读取服务
    uni.getBLEDeviceServices({
      deviceId: deviceUUID,
      success: function (serviceRes) {
        console.log('获取服务成功', serviceRes)
        // 这里可以进一步处理服务、特征值等
        // 假设需要配对,则调用以下逻辑(注意:配对通常由系统处理,开发者无法直接触发)
      }
    });
  },
  fail: function (err) {
    console.error('蓝牙设备连接失败', err)
  }
});

3. 处理配对请求(注意:此部分由系统自动处理)

在iOS上,当尝试连接一个未配对的蓝牙设备时,系统会自动弹出配对请求对话框。开发者无法直接控制这个对话框的显示,但可以通过监听蓝牙连接的状态来给用户相应的提示。

4. 监听蓝牙连接状态变化

可以通过监听蓝牙连接的状态变化来给用户提示:

uni.onBLEConnectionStateChange(function (res) {
  console.log('蓝牙连接状态变化', res)
  if (res.connected) {
    uni.showToast({
      title: '连接成功',
      icon: 'success'
    });
  } else {
    uni.showToast({
      title: '连接断开',
      icon: 'none'
    });
  }
});

总结

在uni-app的iOS微信小程序低功耗蓝牙开发中,连接设备后的配对请求是由系统自动处理的。开发者需要关注的是蓝牙连接的状态变化,并根据状态变化给用户相应的提示。上述代码示例展示了如何初始化蓝牙适配器、连接蓝牙设备以及监听蓝牙连接状态变化。

回到顶部