4

是否可以使用渐进式 Web 应用程序搜索信标数据(uuid、url、...),而该应用程序仅使用 Web 技术而不使用本地移动技术(Android、ios、...)?

提前致谢。

4

2 回答 2

6

不幸的是,截至 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

于 2017-06-19T14:41:10.737 回答
4

免责声明:我编写了eddystone-web-bluetooth(一个可以轻松读写 Eddystone 设备的库)。github@eddystone-web-bluetooth npm@eddystone-web-bluetooth

可以使用Web 蓝牙 API目前仅 Chrome 支持扫描蓝牙设备。

通过使用蓝牙 GATT 服务,您可以连接到 Eddystone 设备并通过遵循其公共规范(基本上是请求代码列表,以及发送和期望其响应的格式)进行通信来发送/接收数据。

这些服务包括以下信息:

  • 网址
  • 广告间隔
  • 锁定状态
  • 等等_

通过使用蓝牙标准信息,您可以了解最通用的设备信息,例如它的 id 和名称:

navigator.bluetooth.requestDevice

蓝牙设备信息


@beaufortfrancois编写了可能是第一个 Eddystone Web 蓝牙配置代码(源代码/演示),因此如果您想深入了解它,可能值得一读。我从中学到了很多。

于 2017-07-12T18:34:03.630 回答