渐进式网络应用程序信标搜索

Progressive web app beacon search

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

提前致谢。

不幸的是,截至 2020 年 7 月,这是不可能的。虽然 Google 一直致力于 WebBluetooth project 以便为浏览器带来对许多蓝牙操作的支持,至少在 Google Chrome 在 Android 6+、Mac 或 ChromeOS.

上的实现

截至撰写本文时尚无法扫描信标。 API 要求 OS 扫描符合请求条件的设备,然后让用户使用用户界面选择要连接的设备。这基本上排除了信标检测。

蓝牙扫描 API 仍处于草稿形式 here.

编辑:@zurfyx 在下面的回答中提到的 APIs 允许您扫描并连接到广告的 GATT 服务,但不允许您读取广告中的数据。这是一个关键的区别,因为读取广告中的数据是实际蓝牙信标检测所需的关键功能。 API 中缺少该功能。没有这种能力,就不可能检测到信标,只能连接到 可能 是 Eddystone 或其他基于服务广告的信标的 BLE 设备。

2020 年 7 月更新:根据 a June 2020 announcement by Apple [=26=,出于隐私方面的考虑,Safari 根本不会获得任何 WebBluetooth API ]这使得在可预见的未来 iOS 我们的应用程序 无法进行蓝牙扫描。

截至2020年7月,Chrome不支持扫描任意广告。在此处查看状态:https://github.com/WebBluetoothCG/web-bluetooth/blob/master/implementation-status.md

免责声明:我写了eddystone-web-bluetooth (a library which makes it easy to read and write to an Eddystone device). github@eddystone-web-bluetooth npm@eddystone-web-bluetooth

使用Web Bluetooth API (currently supported only by Chrome)可以扫描蓝牙设备。

通过使用 Bluetooth GATT service, you can connect to Eddystone devices and send/receive data by communicating following their public specifications(基本上是请求代码列表,以及发送和期望响应的格式)。

这些服务包括如下信息:

  • URL
  • 广告间隔
  • 锁定状态
  • more

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

navigator.bluetooth.requestDevice


@beaufortfrancois wrote the probably first Eddystone Web Bluetooth configuration code (source code / demo), 所以如果你想深入了解它可能值得一读。我从中学到了很多。