uni-app BLE蓝牙通讯 notify在安卓上不生效,IOS正常
uni-app BLE蓝牙通讯 notify在安卓上不生效,IOS正常
| 项目信息 | 详细信息 | 
|---|---|
| 产品分类 | uniapp/App | 
| PC开发环境操作系统 | Mac | 
| PC开发环境操作系统版本号 | 12.3 | 
| HBuilderX类型 | 正式 | 
| HBuilderX版本号 | 3.4.7 | 
| 手机系统 | Android | 
| 手机系统版本号 | Android 12 | 
| 手机厂商 | 华为 | 
| 手机机型 | nova6se | 
| 页面类型 | vue | 
| vue版本 | vue2 | 
| 打包方式 | 云端 | 
| 项目创建方式 | HBuilderX | 
操作步骤:
–
预期结果:
实际结果:
bug描述:
同样的设备环境,安卓上没法监听到notify的数据变化 IOS则正常,我看好久前就有人咨询这个问题,编译为微信小程序也是ios正常 安卓不能监听,换了多个安卓设备都是这样
 

更多关于uni-app BLE蓝牙通讯 notify在安卓上不生效,IOS正常的实战教程也可以访问 https://www.itying.com/category-93-b0.html
read是正常的  就是notify不响应
更多关于uni-app BLE蓝牙通讯 notify在安卓上不生效,IOS正常的实战教程也可以访问 https://www.itying.com/category-93-b0.html
我刚好相反,安卓正常的,在ios里 read正常,notify没反应。。
在 uni-app 中使用 BLE 蓝牙通讯时,notify 在安卓设备上不生效,但在 iOS 上正常,这可能是由于安卓和 iOS 在蓝牙实现上的差异导致的。以下是一些可能的原因和解决方案:
1. 确保 notify 已正确启用
在安卓设备上,notify 特性需要手动启用。你可以使用 uni.writeBLECharacteristicValue 方法向特征值写入 1 来启用 notify。
uni.writeBLECharacteristicValue({
  deviceId: deviceId, // 设备 ID
  serviceId: serviceId, // 服务 UUID
  characteristicId: characteristicId, // 特征 UUID
  value: new Uint8Array([1]).buffer, // 启用 notify
  success: (res) => {
    console.log('Notify 已启用', res);
  },
  fail: (err) => {
    console.error('启用 Notify 失败', err);
  }
});
2. 检查特征值是否支持 notify
确保你使用的特征值(Characteristic)支持 notify 或 indicate 特性。可以通过 uni.getBLEDeviceCharacteristics 方法获取特征值的属性,检查其 properties 是否包含 notify。
uni.getBLEDeviceCharacteristics({
  deviceId: deviceId,
  serviceId: serviceId,
  success: (res) => {
    const characteristics = res.characteristics;
    characteristics.forEach((char) => {
      if (char.properties.notify) {
        console.log('特征值支持 notify:', char.uuid);
      }
    });
  },
  fail: (err) => {
    console.error('获取特征值失败', err);
  }
});
3. 监听 onBLECharacteristicValueChange 事件
在启用 notify 后,需要通过 uni.onBLECharacteristicValueChange 监听特征值的变化。
uni.onBLECharacteristicValueChange((res) => {
  console.log('收到特征值变化:', res.value);
});
4. 安卓设备的兼容性问题
安卓设备在蓝牙实现上可能存在兼容性问题,尤其是某些厂商的定制系统(如小米、华为等)。可以尝试以下方法:
- 确保设备蓝牙版本支持 BLE。
- 检查设备是否开启了蓝牙权限。
- 尝试重启设备或重新连接蓝牙。
5. 调试日志
在开发过程中,可以通过 uni.getSystemInfo 获取设备信息,确认设备型号和系统版本,以便更好地定位问题。
uni.getSystemInfo({
  success: (res) => {
    console.log('设备信息:', res);
  }
}); 
        
       
                     
                   
                    

