我的项目基于discover服务和特征示例项目:https://googlechrome.github.io/samples/web-bluetooth/discover-services-and-characteristics.html
我正在尝试将设备中所有可用服务的列表记录到Chrome控制台中。有可能做到这一点吗?因为如果我不输入服务ID,就会遇到securityError:“啊!SecurityError: Origin不允许访问任何服务。提示:在requestDevice()选项中将服务UUID添加到'optionalServices‘。”
我知道NRF连接可以检测所有服务。
那么,我是否可以从设备中检索所有服务的列表,而无需预定义服务?
任何想法都将不胜感激。
发布于 2020-04-19 01:22:06
简短的回答:不,你必须列出你想要访问的服务。
Web Bluetooth在设计时考虑到了用户隐私,并要求应用程序想要访问的服务在requestDevice调用中列出,以便浏览器可以向用户提供适量的通信。有一种方法可以请求连接到任何设备acceptAllDevices: true,但没有一种方法可以请求访问设备上的所有服务。
当你正在开发并且需要了解Chrome能在设备上看到什么时,你可以使用chrome://bluetooth-internals/#devices。开始扫描以查找设备,然后选择“检查”。(只有一些设备会接受连接。)
NRF Connect也是一个优秀且功能更强大的工具。
当前的Web Bluetooth设计不支持构建该级别的诊断应用程序。有关网络蓝牙的安全和隐私模型的更多信息,请参阅Web Bluetooth specification。
关于这些主题的一篇优秀的开发人员面临的文章:https://developers.google.com/web/updates/2015/07/interact-with-ble-devices-on-the-web
https://stackoverflow.com/questions/61274998
复制相似问题