使用不同的UUID检测iBeacons

时间:2013-12-30 06:03:20

标签: ios ibeacon

我正在尝试使用UUID作为特定信标的标识符(在这种情况下使用手机)。我知道主要和次要用于执行此操作,但我宁愿使用UUID或标识符字符串。

话虽如此,无论如何,无论使用CLBeacon API的UUID,都能扫描信标吗?

2 个答案:

答案 0 :(得分:6)

在Android上,您可以扫描所有UUID。在iOS上你不能。见:

http://developer.radiusnetworks.com/2013/10/21/corebluetooth-doesnt-let-you-see-ibeacons.html

在iOS上,CoreLocation限制您监控最多20个不同的UUID。测距没有20的限制,但你仍然必须提前知道UUID。

答案 1 :(得分:1)

据我所知,监控具有不同UUID的iBeacon区域没有限制。你可以这样做:

NSArray *uuids = [NSArray arrayWithObjects:@"####-####-###1", @"####-####-###2", nil];
for (NSString *uuidString in uuids) {
    CLBeaconRegion *region = [[CLBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:uuidString] identifier:identifier];
    region.notifyOnEntry = entry;
    region.notifyOnExit = exit;
    region.notifyEntryStateOnDisplay = YES;
    [_locationManager startMonitoringForRegion:region];
}

您只需要确保在locationManager的委托方法中检查UUID。你可以使用这样的东西:

- (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region {
    if ([region isKindOfClass:[CLBeaconRegion class]]) {
        CLBeaconRegion *beaconRegion = (CLBeaconRegion *)region;
        NSLog(@"ProximityUUID:%@", beaconRegion.proximityUUID);
        NSLog(@"ProximityMajor:%@", beaconRegion.major);
        NSLog(@"ProximityMinorD:%@", beaconRegion.minor);
    }
}

您应该看到使用不同的UUID调用委托方法。

希望这有帮助。