如何为许多信标声明Estimote数组

时间:2014-03-12 01:47:56

标签: estimote

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

我尝试了提供的答案,但是当我制作了三个区域(例如:来自该示例代码beacon1Region,beacon2Region,beacon3Region)并为每个区域包含“EstimoteSampleRegion”(例如:EstimoteSampleRegion1,EstimoteSampleRegion2,EstimoteSampleRegion3)我只能获得第一个信标结果(在索引0中)当我startRangingBeaconsInRegion。

我该如何使其发挥作用?我应该在一个阵列中列出三个estimote样本区域,这些区域全部用于单个区域(例如:“beaconRegion”),然后使用[self.beaconManager startRangingBeaconsInRegion:beaconRegion]查看三个信标的单个区域?  如果是,那么显示的代码是什么声明该阵列有多个信标用于一个区域?

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

1 个答案:

答案 0 :(得分: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设备)。