2015-04-03 50 views
1

目前我接收器的应用程序能够与一个UUID工作,这是我的代码:应用程序使用startMonitoringForRegion注册的UUID数量是多少?

- (void)startMonitoringItem { 
    CLBeaconRegion *beaconRegion = [self beaconRegionWithItem]; 
    [self.locationManager startMonitoringForRegion:beaconRegion]; 
    [self.locationManager startRangingBeaconsInRegion:beaconRegion]; 
} 

- (CLBeaconRegion *)beaconRegionWithItem{ 

    NSUUID *iPadTransmitterUUID = [[NSUUID alloc] initWithUUIDString:@"A77A1B68-49A7-4DBF-914C-760D07FBB87B"]; 

    CLBeaconRegion *beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:iPadTransmitterUUID 
                     major:1 
                     minor:1 
                    identifier:@"iPadTransmitter"]; 
    return beaconRegion; 
} 

我可以增量的应用程序注册UUID的数量。但是,有一个限制。从Apple文档:

应用程序可以达到20个地区同时

这让我怀疑我的应用程序的可行性寄存器...我想设置为一个iBeacon显示接收器应用约500家商店的购物中心。我想注册约500个UUID,但该应用程序一次只能检测到约5个商店的iBecon UUID。当最大区域只有20个时,我该怎么做?

组合次要和主要值的最大数量是多少?

+0

此问题的标题不完整。 – ThomasW 2015-04-03 04:12:55

+0

在这种情况下,您通常会在所有信标上使用相同的UUID,通过主要和次要区分。然后您可以注册一个区域来覆盖所有商店。棘手的一点是,一旦你进入了一个地区,你将不会得到另一个通知,直到你退出它,这可能是一个重叠地区的问题 - 所以一旦你得到一个地区入境通知,你需要停止监测通用地区,并开始监测一个特定的主要/次要区域 – Paulw11 2015-04-03 04:29:19

回答

2

处理大量信标的关键是为主要和次要创建一个带有通配符的区域,因此任何组合都将进行匹配。这种方式可以作为单个区域用于监视同一UUID下你所有的信标:以上

CLBeaconRegion *beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:commonUUID identifier:@"commonRegion"]; 

假设你可以让所有的商店都为他们的信标相同的UUID。如果你不能,你可以添加更多的基于UUID的区域,但是iOS限制了20个区域。

如果您使用此技术,您还需要使用信标的范围,以便您可以读取每个信标上的实际主要和次要标识符。无论如何,你的代码显示你正在这样做。在特定的灯塔上采取行动的逻辑将进入范围内的回调。

+0

Thx @davidgyoung。如果我只使用一个UUID,是否有范围限制?我的意思是我可以分多少个主要和次要组合?主要和次要的最大值分别是多少? – user1872384 2015-04-08 04:11:35

+0

已发布新问题,请帮助:D:http://stackoverflow.com/questions/29505807/whats-the-maximum-value-for-major-and-minor-for-ibeacon-transmitter – user1872384 2015-04-08 04:13:41

+0

顺便说一句什么是他们把地区限制在20岁的原因是什么?是由于设备功率使用限制还是其他原因? – user1872384 2015-04-08 04:15:56