Web Bluetooth API

这是我参与11月更文挑战的第19天,活动详情查看:2021最后一次更文挑战

Web Bluetooth API 允许网站通过 GATT(Generic Attribute Profile) 客户端与附近用户选择的低功耗蓝牙(BLE)设备进行安全和隐私保护的通信 API。

维基百科:

  • BLE低功耗蓝牙Bluetooth Low Energy,或称Bluetooth LEBLE,旧商标Bluetooth Smart)也称蓝牙低能耗低功耗蓝牙,是蓝牙技术联盟设计和销售的一种个人局域网技术,旨在用于医疗保健、运动健身、信标、安防、家庭娱乐等领域的新兴应用。相较经典蓝牙,低功耗蓝牙旨在保持同等通信范围的同时显著降低功耗和成本。
  • GATT 是一个在蓝牙连接之上的发送和接收很短的数据段的通用规范,这些很短的数据段被称为属性。说
  • Web Bluetooth API 基于 Promise 规范。

其还在实验阶段,在生产中使用之前,请仔细检查浏览器兼容性表。以下是 Can I Use 对其兼容情况:

image-20210529154831905

注意:此 API 在 Web Worker 中不可用。

基础用法

下面,我们将使用一个简单的示例,来看看如何获取一台 BLE 设备的基本信息。

注意:为了方便实现效果,我们自己在本地手写一个配置选项。

我们使用 navigator.bluetooth.requestDevice() 方法并为函数提供一个配置对象,该对象含有关我们要使用哪个设备,以及都有哪些服务可用的信息。它将返回一个 Promise 对象。如果没有蓝牙设备选择界面,则此方法返回与条件匹配的第一个设备。

<button class="btn">点我!</button>
复制代码
let options = {
  filters: [
    { services: ['heart_rate'] },
    { services: [0x1802, 0x1803] },
    { services: ['c48e6067-5295-48d3-8d5c-0395f61792b1'] },
    { name: '设备名' },
    { namePrefix: '前缀' }
  ],
  optionalServices: ['battery_service']
}
​
const button = document.querySelector('.btn')
button.addEventListener('click', function () {
  navigator.bluetooth
    .requestDevice(options)
    .then(device => {
      console.log('Got device:', device.name)
      // 在此处实现设备调用
    }).catch((err) => {
      console.log("Error: " + err)
    })
})
复制代码

大致效果如下:

image-20210616234507394.png

注:如果报错,直接将代码复制浏览器控制台下运行 -> Error: SecurityError: requestDevice() called from cross-origin iframe.

更多资源

目前,已经有很多例子可以实践和借鉴,你可以在 demosWeb Bluetooth Samples 查看更多例子,如:Web 蓝牙打印机、LED 显示器、赛车等。

通过 Web 控制蓝牙设备:WebBluetooth入门

Web Bluetooth API 初探

Guess you like

Origin juejin.im/post/7032310981598380063