0

我看到这个问题Estimote:detecting multiple beacons with ESTBeaconRegion 和 startRangingBeaconsInRegion?

我尝试提供的答案,但是当我创建三个区域(例如:从该示例代码 beacon1Region、beacon2Region、beacon3Region)并为每个区域包括“EstimoteSampleRegion”(例如:EstimoteSampleRegion1、EstimoteSampleRegion2、EstimoteSampleRegion3)时,我只能得到第一个信标作为结果(在索引 0) 中,当我启动RangingBeaconsInRegion 时。

我怎样才能使它工作?我是否应该在一个数组中列出三个估计样本区域,这些区域全部用于单个区域(例如:“beaconRegion”),然后使用 [self.beaconManager startRangingBeaconsInRegion:beaconRegion] 在该单个区域中查找三个信标?
如果是,那么显示该数组的代码是什么,该数组在一个区域中具有许多信标?

或者我应该创建三个 beaconManager 实例,每个信标都有自己的区域?当我这样做时的问题是我只能看到第一个信标。不是三个。

4

1 回答 1

3

你只得到第一个信标的原因是因为你在不同的区域范围内,这就是 iOS 识别你在寻找什么的方式。即使使用 CoreLocation 和一个 CLLocationManager,您也会在委托方法的数组中获得一个信标。

例如,您可以将远程信标添加到您自己的阵列中,这可以是您模型中的属性。

或者我应该创建三个 beaconManager 实例,每个信标都有自己的区域?当我这样做时的问题是我只能看到第一个信标。不是三个。

是的,这可以通过这种方式完成。然后你实施

- (void)beaconManager:(ESTBeaconManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(ESTBeaconRegion *)region

并且该方法将每 1 秒为每个信标管理器调用一次。在当前beacons阵列中,只有一个对象,但毕竟你得到了所有的信标。和上面一样,您可以将远程信标添加到您自己的数组中,例如,它可以是您模型中的属性。

如果您的信标具有相同的主要编号(和不同的次要编号),您可以使用此方法:

[self.manager startRangingBeaconsInRegion:[[ESTBeaconRegion alloc] initWithProximityUUID:ESTIMOTE_PROXIMITY_UUID major:713 identifier:@"Multiple Beacons"]];

在那之后

- (void)beaconManager:(ESTBeaconManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(ESTBeaconRegion *)region

您将获得包含多个信标的阵列(当然,如果您的 iOS 设备附近有它们)。

于 2014-03-12T11:14:08.030 回答