一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第7天,点击查看活动详情。
不常用的浏览器 API,这一篇要看的 API 是 Bluetooth,也就是蓝牙连接相关的 API。蓝牙连接是一种很常用的设备连接方式,但是浏览器对蓝牙的支持就比较晚了,究其原因,还是因为之前前端一度是以显示内容为主的,设备连接这种偏向于系统底层的能力基本上用不到。后来浏览器推出 Bluetooth API 也是服务于 Web 应用的。
Bluetooth API 的兼容性很惨,只有较新版本的 chromium 浏览器才支持,对于普通的网页这类 API 没办法考虑,但是如果目标应用是 chrome book 上面的 PWA,那么这部分 API 就可以放心使用了。
我们可以通过 navigator.bluetooth 获取 Bluetooth 对象,这个 API 不能用于 Webworker。Bluetooth 上面最重要的方法是 requestDevice,可以获取连接到本机上的蓝牙设备列表,可以通过参数过滤想要的设备类型,具体的用法可以查看示例。
关于能力监测上,Bluetooth 上面提供了 getAvailability 方法,可以获取到是否支持蓝牙连接,它会返回一个 Promise,下面是 MDN 上面的用法示例:
navigator.bluetooth.getAvailability().then(available => {
if (available)
console.log("This device supports Bluetooth!");
else
console.log("Doh! Bluetooth is not supported");
});
获取到蓝牙设备后,我们可以根据 GATT 规范来控制蓝牙设备,GATT 是一个在蓝牙连接之上的发送和接收很短的数据段的通用规范。从 JS 层面我们可以传递一些二进制数据来与目标设备进行一个交互,具体的交互内容属于通用的蓝牙交互协议内容,这部分不限于浏览器技术,是蓝牙连接的专业领域知识,这里不做展开了,有相关的开发需求可以查看示例。
有关蓝牙的 API 内容就这么多,需要注意得是这个 API 也需要在安全上下文运行。