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

Web Bluetooth:requestLEScan是否支持所有广播类型?无事件及扩展广播问题咨询

问题:Web Bluetooth无法捕获扩展广播设备

我正在开发一个无需配对、通过Web Bluetooth显示蓝牙广播内容的项目。在Android设备上使用navigator.bluetooth.requestLEScan()时,会弹出蓝牙权限请求并列出部分设备,但仅使用扩展广播(或不可连接)的设备未被显示。

我的代码如下:

const scan = await navigator.bluetooth.requestLEScan({
      acceptAllAdvertisements: true,
      options: { keepRepeatedDevices: true }
});
scan.onadvertisementreceived = event => {...};

遗憾的是未触发任何advertisementreceived事件,而手机上另一款应用却能显示包括扩展广播在内的大量设备。请问我哪里操作有误?Web Bluetooth API是否适用于获取扩展广播内容?另外,navigator.bluetooth.requestLEScan()是否可用于所有广播类型?


解答

参数结构错误是核心问题

你代码里的keepRepeatedDevices参数被错误嵌套在options字段下,这不符合Web Bluetooth API的参数规范。正确的参数结构中,acceptAllAdvertisements和keepRepeatedDevices是同级配置项,修正后的代码如下:

const scan = await navigator.bluetooth.requestLEScan({
  acceptAllAdvertisements: true,
  keepRepeatedDevices: true
});
scan.onadvertisementreceived = event => {...};

这个错误会导致扫描逻辑异常,直接触发不了advertisementreceived事件。

Web Bluetooth对扩展广播的支持情况

Web Bluetooth API支持获取扩展广播内容,但有两个前提:

  • 浏览器版本要求:Android平台需要Chrome 107及以上版本;
  • 硬件要求:设备蓝牙模块需支持BLE 5.0及以上标准(扩展广播是BLE 5.0新增特性)。
    如果你的设备或浏览器版本不达标,就无法捕获这类广播。

requestLEScan()对广播类型的支持范围

requestLEScan()并非支持所有广播类型:

  • 可支持:可连接广播、不可连接广播、扩展广播(满足上述版本和硬件要求);
  • 不支持:定向广播(Directed Advertising),这类广播是针对特定设备发送的,通用扫描无法捕获。

额外排查建议

  • 升级Chrome到最新稳定版,确保版本≥107;
  • 确认浏览器已获得位置权限和蓝牙权限(Android系统中BLE扫描必须依赖位置权限);
  • 用已知的BLE 5.0设备测试,排除硬件兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 05:07:38