You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome中连接BLE条码扫描仪遇UUID黑名单问题及方案咨询

Newland WD4 BLE指环扫描器Chrome连接问题解决方案

关于黑名单UUID的限制

Chrome的Web Bluetooth API无法绕过UUID黑名单,00001812是标准HID服务UUID,属于浏览器明确禁止通过Web Bluetooth访问的范畴——这是出于安全考虑,防止恶意网页控制输入设备。

可行替代方案

1. 查找设备自定义BLE服务

Newland WD4这类专业扫描设备不会依赖标准HID服务传输条码数据,大概率提供了自定义BLE服务。你可以:

  • 打开Chrome的chrome://bluetooth-internals/页面,扫描并连接WD4,查看设备暴露的所有服务和特征UUID
  • 重点关注带有“Notify”或“Indicate”属性的特征(条码数据通常通过通知方式推送)
  • 在代码中请求该自定义服务的UUID,避免使用黑名单中的HID服务

2. 联系厂商获取Web SDK

直接咨询Newland官方技术支持,确认是否有针对WD4的Web端BLE通信SDK。厂商提供的SDK通常已经处理了服务权限、数据解析等问题,能大幅降低开发成本。

3. 安卓本地代理中转方案

如果前两种方法不可行,可以搭建轻量安卓本地应用作为中转:

  • 用安卓原生BLE API连接WD4,读取条码数据
  • 应用通过WebSocket或LocalStorage与Chrome网页通信,将条码数据转发给网页
  • 这种方式既能避开Web Bluetooth的限制,又能满足安卓Chrome的使用需求

自定义服务读取代码示例

假设你通过chrome://bluetooth-internals/找到设备的条码特征UUID为0000ffe1-0000-1000-8000-00805f9b34fb,对应服务UUID为0000ffe0-0000-1000-8000-00805f9b34fb,可参考以下代码:

async function connectWD4Scanner() {
  try {
    // 用设备名称过滤,避免指定黑名单UUID
    const device = await navigator.bluetooth.requestDevice({
      filters: [{ namePrefix: 'Newland WD4' }],
      optionalServices: ['0000ffe0-0000-1000-8000-00805f9b34fb']
    });
    
    const gattServer = await device.gatt.connect();
    const service = await gattServer.getPrimaryService('0000ffe0-0000-1000-8000-00805f9b34fb');
    const barcodeChar = await service.getCharacteristic('0000ffe1-0000-1000-8000-00805f9b34fb');
    
    // 监听条码数据通知
    barcodeChar.addEventListener('characteristicvaluechanged', (e) => {
      const barcode = new TextDecoder().decode(e.target.value).trim();
      console.log('扫描到的条码:', barcode);
      // 此处可将条码数据传入业务逻辑
    });
    
    await barcodeChar.startNotifications();
    console.log('已连接扫描器,等待条码数据...');
  } catch (err) {
    console.error('连接失败:', err);
  }
}

注意:实际UUID需以设备真实暴露的为准,上述仅为示例。

内容的提问来源于stack exchange,提问作者NVO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 20:42:52