我正在尝试扫描附近的信标在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的工作方式。