0

我正在使用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'.

这个问题有什么解决办法吗?

4

0 回答 0