是否可以使用渐进式 Web 应用程序搜索信标数据(uuid、url、...),而该应用程序仅使用 Web 技术而不使用本地移动技术(Android、ios、...)?
提前致谢。
是否可以使用渐进式 Web 应用程序搜索信标数据(uuid、url、...),而该应用程序仅使用 Web 技术而不使用本地移动技术(Android、ios、...)?
提前致谢。
不幸的是,截至 2020 年 7 月,这是不可能的。虽然 Google 一直在致力于WebBluetooth 项目,以便为浏览器带来对许多蓝牙操作的支持,至少在 Android 6+、Mac 或 ChromeOS 上的 Google Chrome 实现中是这样。
在撰写本文时,尚无法扫描信标。API 要求操作系统扫描符合请求条件的设备,然后让用户使用用户界面选择要连接的设备。这基本上排除了信标检测。
蓝牙扫描 API 仍处于草稿形式。
编辑: @zurfyx 在下面的答案中提到的 API 允许您扫描并连接到广告的 GATT 服务,但不允许您读取广告中的数据。这是一个关键的区别,因为读取广告中的数据是实际蓝牙信标检测所需的关键能力。该 API 缺少该功能。如果没有该功能,就不可能检测到信标,只能连接到可能是 Eddystone 或其他基于服务广告的信标的 BLE 设备。
2020 年 7 月更新:根据Apple 2020 年 6 月的公告 ,由于隐私问题,Safari 将根本不会获得任何 WebBluetooth API。这使得在可预见的未来,iOS 我们的应用程序无法进行蓝牙扫描。
自 2020 年 7 月起,Chrome 不支持扫描任意广告。在此处查看状态:https ://github.com/WebBluetoothCG/web-bluetooth/blob/master/implementation-status.md
免责声明:我编写了eddystone-web-bluetooth(一个可以轻松读写 Eddystone 设备的库)。github@eddystone-web-bluetooth npm@eddystone-web-bluetooth
可以使用Web 蓝牙 API(目前仅 Chrome 支持)扫描蓝牙设备。
通过使用蓝牙 GATT 服务,您可以连接到 Eddystone 设备并通过遵循其公共规范(基本上是请求代码列表,以及发送和期望其响应的格式)进行通信来发送/接收数据。
这些服务包括以下信息:
通过使用蓝牙标准信息,您可以了解最通用的设备信息,例如它的 id 和名称:
navigator.bluetooth.requestDevice
@beaufortfrancois编写了可能是第一个 Eddystone Web 蓝牙配置代码(源代码/演示),因此如果您想深入了解它,可能值得一读。我从中学到了很多。