首页 > 解决方案 > 网络蓝牙 - 我可以检索设备内所有服务的列表吗?

问题描述

我的项目基于发现服务和特征示例项目: https ://googlechrome.github.io/samples/web-bluetooth/discover-services-and-characteristics.html

我正在尝试将设备中所有可用服务的列表记录到 Chrome 控制台中。有可能这样做吗?因为如果我不输入服务 ID,我会遇到一个 securityError:“Argh!SecurityError:不允许 Origin 访问任何服务。提示:在 requestDevice() 选项中将服务 UUID 添加到 'optionalServices'。”

我知道 NRF Connect 可以检测到所有服务。

那么我可以在不预先定义服务的情况下从设备中检索所有服务的列表吗?

任何想法,将不胜感激。

标签: bluetooth-lowenergyweb-bluetooth

解决方案


简短回答:不,您必须列出您想要访问的服务。

Web 蓝牙在设计时考虑了用户隐私,并要求应用程序想要访问的服务在requestDevice调用中列出,以便浏览器可以为用户提供适当数量的通信。有一种方法可以请求连接到任何设备acceptAllDevices: true,但没有一种方法可以请求访问设备上的所有服务。

当您正在开发并需要了解 Chrome 可以在您可以使用的设备上看到什么时chrome://bluetooth-internals/#devices。开始扫描以查找设备,然后选择检查。(只有部分设备会接受连接。)

NRF Connect也是一个出色且功能更强大的工具。

当前的 Web 蓝牙设计不支持构建该级别的诊断应用程序。有关 Web 蓝牙的安全和隐私模型的更多信息,请参见Web 蓝牙规范

一篇关于这些主题的面向开发人员的优秀文章:https ://developers.google.com/web/updates/2015/07/interact-with-ble-devices-on-the-web


推荐阅读