Web Bluetooth API 浏览器支持
发布于
Web Bluetooth API — Web Bluetooth API 允许网页应用通过 navigator.bluetooth.requestDevice() 请求访问附近的低功耗蓝牙(BLE)设备,并与其 GATT 服务通信。
浏览器与生态支持
Section titled “浏览器与生态支持”- 图例
- 支持
- 部分支持
- 需开启标志
- 不支持
- 未知
| 浏览器 / 平台 | 支持 | 版本 | 置信度 | 来源 | 备注 |
|---|---|---|---|---|---|
| Chrome (Desktop) | 支持 | 56 | 高 | 来源 | — |
| Chrome (Android) | 支持 | 56 | 高 | 来源 | 1 |
| Edge (Desktop) | 支持 | 79 | 高 | 来源 | 2 |
| Firefox (Desktop) | 不支持 | — | 高 | 来源 | 3 |
| Firefox (Android) | 不支持 | — | 高 | 来源 | 45 |
| Safari (macOS) | 不支持 | — | 高 | 来源 | 6 |
| Safari (iOS) | 不支持 | — | 高 | 来源 | 78 |
| Samsung Internet | 支持 | 6.0 | 高 | 来源 | 9 |
| WebView (Android) | 不支持 | — | 高 | 来源 | 10 |
| Opera | 支持 | 43 | 高 | 来源 | 11 |
- 由 browser-compat-data 镜像自 Chrome 的数据推导。
- 由 browser-compat-data 镜像自 Chrome 的数据推导。
- 实现跟踪:https://bugzil.la/674737。
- 实现跟踪:https://bugzil.la/674737。
- 由 browser-compat-data 镜像自 Firefox 的数据推导。
- 实现跟踪:https://webkit.org/b/101034。
- 实现跟踪:https://webkit.org/b/101034。
- 由 browser-compat-data 镜像自 Safari 的数据推导。
- 由 browser-compat-data 镜像自 Chrome Android 的数据推导。
- browser-compat-data 未记录 WebView Android 的支持。
- 镜像 Chrome 的实现(BCD `opera: mirror`):Linux 上有支持,但默认未启用。
requestDevice() 必须在用户手势(例如点击处理函数)中调用,并通过 filters 指定
你要使用的 GATT 服务来缩小设备选择范围:
async function connectHeartRateMonitor() { const device = await navigator.bluetooth.requestDevice({ filters: [{ services: ['heart_rate'] }], }); const server = await device.gatt.connect(); const service = await server.getPrimaryService('heart_rate'); const characteristic = await service.getCharacteristic('heart_rate_measurement'); await characteristic.startNotifications(); return characteristic;}如何在运行时检测
Section titled “如何在运行时检测”在提供该功能之前先检测 navigator.bluetooth 是否存在,并为不支持的情况提供回退:
if ('bluetooth' in navigator) { connectButton.hidden = false;} else { connectButton.hidden = true; fallbackNotice.textContent = '此浏览器无法在页面中配对蓝牙设备。';}- 需要安全上下文——不允许从不安全的源调用。
requestDevice()需要短暂的用户激活(点击或轻触处理函数);缺少时返回的 Promise 会以SecurityError拒绝。- 如果没有可返回的设备——例如用户没有选择任何设备——
requestDevice()会以NotFoundError拒绝。 - 各浏览器与平台的支持并不一致;在为特定目标依赖该功能之前,请先查看上方的支持表。
- 始终将上面的运行时检测与支持表结合使用:浏览器可能暴露了
navigator.bluetooth, 但仍会在请求时才表现出的限制行为。
完整参考(设备选择流程、GATT 模型、权限行为)见 Web Bluetooth API。
相关:WebUSB API。
← 返回兼容性浏览器。