Web Bluetooth:为什么大多数设备 "Unknown or unsupported"?

Web Bluetooth: Why are most devices "Unknown or unsupported"?

我正在使用网络蓝牙连接到设备并读取名称和电池电量。 我让它工作了,但我想连接的设备是“未知或不受支持的”,但我不知道为什么。在 requestDevice() 上,我只得到我的 Iphone 和很多未知设备。

当我检查 chrome://bluetooth-internals 上的蓝牙设备时,我看到了一些已知设备,但不是我要找的设备。我必须根据最新的 RSSI 猜测正确的设备。这对用户不友好。

有办法解决这个问题吗?或者有人可以解释为什么几乎所有设备都是未知的或不受支持的。

我正在使用 Mac。 (以防万一)

更新@François Beaufort
nRF Connect 应用程序的屏幕截图。在应用程序中,设备有一个名称。我刚刚看到这个设备在bluetooth-internals中也有一个名字,但它似乎并不总是宣传它的名字。

它说 Device type: Google 但它不是来自 Google 的设备。

您在蓝牙浏览器选择器中看到的名称是蓝牙设备的人类可读名称。蓝牙设备可能有两种不同的名称类型:一种是蓝牙设备公布的,另一种是蓝牙设备在其数据库中作为其蓝牙低功耗通用访问配置文件 (GAP) 设备名称发布的。如果蓝牙设备具有两种类型的名称,您将获得 GAP 设备名称。

如果您看到 "Unknown or Unsupported Device (12:34:56:78:9A:BC)",则表示蓝牙设备未公布其名称。为了减少蓝牙选择器中的噪音,我建议您使用其他过滤器,例如 "services" 如果您发现您的蓝牙设备有一些广告。在 https://web.dev/bluetooth/#services-filter

查看完整的开发者文档
navigator.bluetooth.requestDevice({ filters: [{ services: ['battery_service'] }] })
.then(device => { /* … */ })
.catch(error => { console.error(error); });

更新:您可以在 Chrome 93 的“服务”列中的 chrome://bluetooth-internals/#devices 看到广告服务。参见 https://chromiumdash.appspot.com/commit/49610d372d4d479f43e918d7bbf14537efd2769c