Web Bluetooth:想要在使用 navigator.bluetooth.requestDevice 时过滤制造商数据

Web Bluetooth: Want to filter on manufacturer data when using navigator.bluetooth.requestDevice

我看到 Google Chrome 没有实现对制造商数据的过滤。 Issue 707635,好像没有任何进展。

Web 蓝牙规范有一个(不稳定的)规范,用于在使用 navigator.bluetooth.requestDevice 时过滤制造商数据(https://webbluetoothcg.github.io/web-bluetooth/#example-filter-by-manufacturer-service-data

有谁知道这方面是否有任何进展或进行了这种过滤工作?

正如您所指出的,Chrome 团队在这方面尚未取得进展。与此同时,按设备名称、设备名称前缀或 GATT 服务进行过滤是否适合您?

你可以试试https://googlechrome.github.io/samples/web-bluetooth/device-info.html

简答:

  1. 'Star' 发布 707635 以接收更新并表示兴趣。
  2. 如果您有清晰的示例/业务案例要分享,请考虑添加评论以帮助开发人员了解如何确定这项工作的优先级。
  3. Chromium 是开源的,考虑贡献或寻找开发人员来完成这项工作。

经过我们的讨论,我在 Chrome 92 中添加了对 Web 蓝牙中制造商数据过滤器的支持。参见 https://crbug.com/707635

这是一个例子:

// Filter Bluetooth devices from Google company with manufacturer data bytes
// that start with [0x01, 0x02].
navigator.bluetooth.requestDevice({
  filters: [{
    manufacturerData: [{
      companyIdentifier: 0x00e0,
      dataPrefix: new Uint8Array([0x01, 0x02])
    }]
  }],
  optionalServices: ['battery_service'] // Required to access service later.
})
.then(device => { /* … */ })
.catch(error => { console.error(error); });

您将在 https://googlechrome.github.io/samples/web-bluetooth/manufacturer-data-filter.html and some developer documentation at https://web.dev/bluetooth/#manufacturer-data-filter

找到样本

让我知道这是否适合你 ;)