【发布时间】:2017-06-19 12:41:53
【问题描述】:
是否可以使用渐进式 Web 应用程序搜索信标数据(uuid、url、...)?只使用 Web 技术而不使用本地移动技术(Android、ios、...)?
提前致谢。
【问题讨论】:
标签: bluetooth beacon progressive-web-apps eddystone web-bluetooth
是否可以使用渐进式 Web 应用程序搜索信标数据(uuid、url、...)?只使用 Web 技术而不使用本地移动技术(Android、ios、...)?
提前致谢。
【问题讨论】:
标签: bluetooth beacon progressive-web-apps eddystone web-bluetooth
很遗憾,截至 2020 年 7 月,这不可能。虽然 Google 一直在努力开发 WebBluetooth project,以便为浏览器提供对许多蓝牙操作的支持,至少在 Android 6+、Mac 或 ChromeOS 上的 Google Chrome 实施中是这样。
截至撰写本文时,尚无法扫描信标。 API 要求操作系统扫描符合请求条件的设备,然后让用户使用用户界面选择要连接的设备。这基本上排除了信标检测。
蓝牙扫描 API 仍处于草稿形式here.
编辑:@zurfyx 在下面的答案中提到的 API 允许您扫描并连接到广告的 GATT 服务,但不允许您读取广告中的数据。这是一个关键的区别,因为读取广告中的数据是实际蓝牙信标检测所需的关键能力。该 API 缺少该功能。如果没有该功能,就无法检测到信标,只能连接到可能是 Eddystone 或其他基于服务广告的信标的 BLE 设备。
2020 年 7 月更新:根据a June 2020 announcement by Apple 的说法,由于隐私问题,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-bluetoothnpm@eddystone-web-bluetooth
可以使用Web Bluetooth API (currently supported only by Chrome) 扫描蓝牙设备。
通过使用Bluetooth GATT service,您可以连接到 Eddystone 设备并通过按照their public specifications 进行通信来发送/接收数据(这基本上是一个请求代码列表,以及发送和期望其响应的格式)。
这些服务包括以下信息:
通过使用蓝牙标准信息,您可以了解最通用的设备信息,例如它的 id 和名称:
navigator.bluetooth.requestDevice
@beaufortfrancois 编写了可能是第一个 Eddystone Web 蓝牙配置代码 (source code / demo),因此如果您想深入了解它,可能值得一读。我从中学到了很多。
【讨论】:
ServiceWorkerGlobalScope 属性 (developer.mozilla.org/en-US/docs/Web/API/…),您似乎无法通过 Service Worker 侦听器侦听蓝牙事件。