bluetooth-lowenergy - 网络蓝牙 - 我可以检索设备内所有服务的列表吗?
问题描述
我的项目基于发现服务和特征示例项目: https ://googlechrome.github.io/samples/web-bluetooth/discover-services-and-characteristics.html
我正在尝试将设备中所有可用服务的列表记录到 Chrome 控制台中。有可能这样做吗?因为如果我不输入服务 ID,我会遇到一个 securityError:“Argh!SecurityError:不允许 Origin 访问任何服务。提示:在 requestDevice() 选项中将服务 UUID 添加到 'optionalServices'。”
我知道 NRF Connect 可以检测到所有服务。
那么我可以在不预先定义服务的情况下从设备中检索所有服务的列表吗?
任何想法,将不胜感激。
解决方案
简短回答:不,您必须列出您想要访问的服务。
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
推荐阅读
- postgresql - 在 JSONB 列内的数组上附加慢速更新
- spss - 如何重新编码前两位数字SPSS
- r - 如何在 gganimate 中为背景设置 alpha 参数
- flutter - 如何防止 Flutter AppBar 菜单图标与 AppBar 中的滑块重叠?
- javascript - 如何以正确的顺序设置图表饼图颜色?
- sql - 当前用户 ID 居中的排行榜顶部列表 - SQL 查询
- parameters - 使用参数选择在 tableau 上 2 年之间的增长率
- python - Tensorflow Keras评估方法返回一个空列表
- visual-studio-code - 在 vscode 中启用尾随逗号
- python - 如何在按下按钮时访问按钮文本的值。[基维]