UUID、major和minor值提供了iBeacon的识别信息。
Major和minor值用于区分同一区域内的产品或元素。苹果文档对如何实现这一点非常清晰,商店示例也很好。
然而,所有这些只有在每个区域(或子区域)仅有一个元素类别时才能正常工作,但如果我们希望APP能够在同一区域内区分具有相同minor和major的元素,则无法正常工作。
是否存在其他与iBeacon关联的唯一标识符,可以监测/检测,以便我可以区分具有相同minor和major值的iBeacon?
编辑:额外信息
为了测试这个,我创建了两个具有相同UUID和主要值和次要值的iBeacon,然后开始监视我指定的UUID内的iBeacon。
我为区域中的iBeacons实现的回调代码如下:
-(void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region {
NSLog(@"Did range %lu beacon in region %@", (unsigned long)[beacons count], region.identifier);
for (int i=0; i<[beacons count]; i++) {
CLBeacon *beacon = [beacons objectAtIndex:i];
// <- breakpoint!
NSString *_cnt = [[NSString alloc] initWithFormat:@"Number of beacons is : %lu and the current one %i is %f away from you %@",(unsigned long)[beacons count], i, beacon.accuracy, beacon.description];
}
}
当我在信标行添加断点时,我发现检测到的两个CLBeacon对象具有相同的信息:
CLBeacon (uuid:<__NSConcreteUUID 0x17003d8e0> 74278BDA-B644-4520-8F0C-720EAF059935, major:20, minor:0, proximity:1 +/- 0.17m, rssi:-42)
CLBeacon (uuid:<__NSConcreteUUID 0x17003e840> 74278BDA-B644-4520-8F0C-720EAF059935, major:20, minor:0, proximity:2 +/- 0.28m, rssi:-47)
目前我无法区分它们,除非我指定主要值和次要值。
这是我用来配置iBeacons的应用程序的屏幕截图(没有其他可配置的字段):
CLBeacon
获取 CBPeripheral 对象。使用我上面描述的不完美的技巧来关联这两个对象是您能做到的最好的方法。此外,可以参考我写的这篇博客文章:http://developer.radiusnetworks.com/2013/10/21/corebluetooth-doesnt-let-you-see-ibeacons.html - davidgyoung