React原生模拟ibeacon检测



我正在尝试扫描附近的信标在react native应用程序。

我使用了react-native-ble-plx图书馆https://github.com/dotintent/react-native-ble-plx

我用这个windows应用程序模拟了一个信标
https://www.microsoft.com/en-lk/p/beacon-simulator/9nblggh4xvd0?activetab=pivot:overviewtab

我使用ble扫描仪应用程序测试了我的模拟信标,并成功检测到我的模拟信标。

但问题是我无法使用react-native-ble-plx来检测它在我的react native应用中。

它实际上显示附近的几个设备,但它不显示UUID或名称。这些数据显示为null。

例如:

'device', { serviceUUIDs: null,
isConnectable: null,
overflowServiceUUIDs: null,
txPowerLevel: null,
serviceData: null,
manufacturerData: 'TEACFCd6h5jcoxKqh9ACQqwTAAOBqZYcxQ==',
name: null,
mtu: 23,
rssi: -47,
solicitedServiceUUIDs: null,
localName: null,
id: '32:BD:32:6C:E9:C2',

但是当我使用一个真正的设备,如蓝牙耳机或类似的,然后它将被正确地检测显示其名称,uid等。

为什么我不能让我的模拟信标显示在我的react native应用程序扫描时。

仅供参考:我正在使用真正的设备进行扫描。(三星S10 - Android 11)

这是我的代码

我有一个按钮如下

<Button title="Scan devices" onPress={scanDevices} />

和我的函数

const scanDevices = () => {
setIsLoading(true);
// scan devices
manager.startDeviceScan(null, null, (error, scannedDevice) => {
if (error) {
console.warn(error);
}
// if a device is detected add the device to the list by dispatching the action into the reducer
if (scannedDevice) {
console.log('device', scannedDevice);
dispatch({ type: 'ADD_DEVICE', payload: scannedDevice });
}
});
// stop scanning devices after 5 seconds
setTimeout(() => {
manager.stopDeviceScan();
setIsLoading(false);
}, 55000);
};

请注意,我是ble技术的新手,想知道我是否错过了什么。

对于iBeacon广告,信标字段将在manufacturerData中编码,如我在这里的回答所述:https://stackoverflow.com/a/69466133/1461050.

不要期望看到iBeacon ProximityUUID字段出现在serviceuuid字段或其他UUID字段中。这不是iBeacon的工作方式。

最新更新