2

我正在使用 react-native-ble-plx 在我的应用程序中实现蓝牙

蓝牙扫描工作正常,但它在 android 中包含重复项,而在 iOS 中工作正常,因为 allowDuplicates 在 iOS 中默认为 false。

在android中,默认值为true。请提供使用 react-native-ble-plx 的 allowDuplicates 属性过滤掉重复项的解决方案

文档中 startDeviceScan 的语法:-

bleManager.startDeviceScan(
  UUIDs: ?Array<UUID>,
  options: ?ScanOptions,
  listener: (error: ?Error, scannedDevice: ?Device) => void
)

https://github.com/Polidea/react-native-ble-plx/wiki/Bluetooth-Scanning

我的代码:-

    this.manager.startDeviceScan(null, {allowDuplicates:false}, (error, device) => { 
//2nd parameter is scanOptions
        if (error) {
            // Handle error (scanning will be stopped automatically)
            return
        }
       this.state.count++
        if(this.state.count>10)
        {
          this.manager.stopDeviceScan();
        }
        console.log("id",device.id) 
}

请告知是否仍然存在任何语法错误

4

2 回答 2

1

此设置仅适用于 iOS,也不会阻止在那里显示重复项。您必须使用一组或等效项以确保在您的应用中仅显示/使用唯一的

于 2019-07-30T11:42:10.480 回答
0

includes()我使用包含已创建设备名称的列表,并使用该方法检查重复项

  refreshScreen(device){
    if(!this.state.dataNames.includes(device.name)){
      let dataNow = this.state.data;
      dataNow.push(element);
      let names = this.state.dataNames;
      names.push(element.name);
      this.setState(
        {
          refreshing: false,
          data: dataNow,
          dataNames: names, 
        }
      );
    }
  }

此功能添加不在列表中的设备dataNames

于 2021-01-06T11:44:54.773 回答