Избегайте дублирования 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