检测该区域中的所有信标并获取其数据(REACT NATIVE)

时间:2019-02-08 06:23:01

标签: react-native ibeacon

希望你一切都好。

我想检测我范围内的信标。我得到了react-native-beacons-manager,但是它不起作用。

我有信标设备。我测试过但没有运气。

根据此代码,它仅显示我在区域对象中传递的那些UUID。

任何人都可以帮助我如何检测附近的信标。我从图书馆得到的代码是:

源链接为

  

https://github.com/MacKentoch/react-native-beacons-manager

我只是做任何事情,只是使用上面链接中的示例来管理数据。

我的代码是

componentWillMount() {

    Beacons.requestAlwaysAuthorization();

    const region = {
      identifier: 'pBeacon_n',
      uuid: '7BA5D5CE-C416-5FD6-8AAA-919D534E0DC3'
    };



    Beacons.startMonitoringForRegion(region) // or like  < v1.0.7: .startRangingBeaconsInRegion(identifier, uuid)
      .then(() => console.warn('Beacons monitoring started succesfully'))
      .catch(error => console.warn(`Beacons monitoring not started, error: ${error}`));
    // Range for beacons inside the region
    Beacons.startRangingBeaconsInRegion(region) // or like  < v1.0.7: .startRangingBeaconsInRegion(identifier, uuid)
      .then(() => console.warn('Beacons ranging started succesfully'))
      .catch(error => console.warn(`Beacons ranging not started, error: ${error}`));
    // update location to ba able to monitor:
    Beacons.startUpdatingLocation();
  }

  componentDidMount() {
    this.beaconsDidRangeEvent = DeviceEventEmitter.addListener(
      'beaconsDidRange',
      (data) => {
        console.warn('beaconsDidRange data: ', data);

      }
    );

  }

我要传递给该地区的UUID是我真正的信标UUID。

谢谢。

2 个答案:

答案 0 :(得分:1)

不幸的是,iOS仅允许您在未指定ProximityUUID的情况下搜索iBeacon传输。此ReactNative模块使用的最低级别的本机API具有此限制。 Apple将这种方式作为一种安全限制实施,以防止您扫描属于他人的信标。

答案 1 :(得分:-1)

使用这种方法,您可以检测出所有信标,而无需给出uuid等,但是它不能在ios中使用。

startBeacon = () => {
        Reactotron.log('else');
        Beacons.detectIBeacons();
        Beacons.detectAltBeacons();
        Beacons.detectEstimotes();
        Beacons.detectEddystoneUID();
        Beacons.detectEddystoneTLM();
        Beacons.detectEddystoneURL();
        Beacons.startRangingBeaconsInRegion('REGION1')
            .then((data) => {
                Alert.alert('', `Beacons monitoring started!`);
            })
            .catch((error) => {
                Alert.alert('', `Beacons start error!`);
            });
        DeviceEventEmitter.addListener('beaconsDidRange', (data) => {
            if (data.beacons.length) {
                this.setState({ detectedBeacons: data.beacons });
                Alert.alert(`Found beacons!`, JSON.stringify(data.beacons));
            }
        });
    }