我看到了这个问题Estimote: detecting multiple beacons with ESTBeaconRegion and startRangingBeaconsInRegion?
我尝试了提供的答案,但是当我制作了三个区域(例如:来自该示例代码beacon1Region,beacon2Region,beacon3Region)并为每个区域包含“EstimoteSampleRegion”(例如:EstimoteSampleRegion1,EstimoteSampleRegion2,EstimoteSampleRegion3)我只能获得第一个信标结果(在索引0中)当我startRangingBeaconsInRegion。
我该如何使其发挥作用?我应该在一个阵列中列出三个estimote样本区域,这些区域全部用于单个区域(例如:“beaconRegion”),然后使用[self.beaconManager startRangingBeaconsInRegion:beaconRegion]查看三个信标的单个区域? 如果是,那么显示的代码是什么声明该阵列有多个信标用于一个区域?
或者我应该制作三个beaconManager实例,每个信标都有自己的区域?我这样做的问题是我只能看到第一个灯塔。不是三个。
答案 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设备)。