Избегайте дублирования BLE-устройств, использующих реагировать-native-ble-plx

Я использую response-native-ble-plx для реализации Bluetooth в моем приложении

Сканирование по Bluetooth работает нормально, но в Android оно содержит дубликаты, а в iOS - нормально, поскольку allowDuplicates по умолчанию имеет значение false в iOS.

В андроиде по умолчанию установлено значение true. Пожалуйста, предоставьте в качестве решения отфильтровать дубликаты, используя свойство allowDuplicates объекта response-native-ble-plx.

Синтаксис 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) 
}

скажите, пожалуйста, сохраняется ли какая-либо синтаксическая ошибка

2 ответа

Этот параметр предназначен только для iOS и не препятствует отображению дубликатов. Вы должны использовать набор или эквивалент, чтобы убедиться, что только уникальные из них отображаются / используются в вашем приложении

Я использую список с именами найденных устройств и проверяю наличие дубликатов с помощью 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

Другие вопросы по тегам