我正在使用https://github.com/MacKentoch/react-native-beacons-manager库通过我的 react native 应用程序扫描和检测该区域的信标。我的实现在 android 中完美运行,但在 ios 中没有。
我将在下面发布我的实现
useEffect(() => {
const region = {
identifier: identifier,
uuid: uuid,
};
const startRanging = async () => {
if (isBTConnected && permissionGranted) {
if (Platform.OS === 'android') {
Beacons.detectIBeacons();
await Beacons.startRangingBeaconsInRegion(identifier, uuid);
} else if (Platform.OS === 'ios') {
Beacons.requestWhenInUseAuthorization();
await Beacons.startRangingBeaconsInRegion(region);
}
}
};
startRanging()
.then(() => {
if (isBTConnected && permissionGranted) {
DeviceEventEmitter.addListener('beaconsDidRange', (data: ScannedBeacons) => {
console.log('beacons', data.beacons);
dispatch(setAvailableBeacons(data.beacons));
});
}
})
.catch((error: string) => console.log('error', error));
}, [dispatch, identifier, isBTConnected, permissionGranted, uuid]);
我调试了代码,发现代码在之后中断DeviceEventEmitter.addListener('beaconsDidRange', (data: ScannedBeacons) =>
,这一行是ios。这意味着我在尝试使用 ios 设备时没有看到我放置的控制台日志。但对于 android 设备它可以工作。所以问题必须与DeviceEventEmitter
我的理解有关。
这可能是什么原因?
我试过NativeEventEmitter
而不是DeviceEventEmitter
. 但后来我得到一个错误Property 'addListener' does not exist on type 'typeof NativeEventEmitter'.
这个问题有什么解决办法吗?