从Estimote iBeacon的UUID获得主要和次要

时间:2013-12-01 03:54:42

标签: ios iphone objective-c uuid ibeacon

我刚买了一包Estimote iBeacons,我正在尝试做一些听起来很简单的事情。

我想从触发didEnterRegion方法的信标中获取“主要”和“次要”ID。方法如下:

-(void)beaconManager:(ESTBeaconManager *)manager
      didEnterRegion:(ESTBeaconRegion *)region
{
    UILocalNotification *notification = [[UILocalNotification alloc] init];
    notification.alertBody = @"Welcome home rockstar!";
    notification.soundName = UILocalNotificationDefaultSoundName;
    [[UIApplication sharedApplication] presentLocalNotificationNow:notification];
} 

我知道Estimote信标的UUID始终是B9407F30-F5F8-466E-AFF9-25556B57FE6D。但是,我如何才能从特定的灯塔中获得主要和次要的ID,这个信标会影响这个事件呢?我想将两个id格式化为NSStrings。

任何帮助都会很棒!谢谢!

4 个答案:

答案 0 :(得分:2)

According to the ESTBeaconRegion.h fileESTBeaconRegionCLBeaconRegion的子类,其major NSNumber *属性和minor NSNumber *属性。

所以你应该能够做到:

- (void)beaconManager:(ESTBeaconManager *)manager didEnterRegion:(ESTBeaconRegion *)region {
    NSNumber *major = region.major;
    NSNumber *minor = region.minor;
    ...
} 

答案 1 :(得分:2)

很容易得到主要和次要的。简单地将测距和监控结合在一起我对这个问题的回答中提供了详细的说明: iBeacon: get major and minor - only looking for uuid

答案 2 :(得分:1)

查看示例:Estimote / iOS-SDK / ProximityDemo

看起来你需要:
实例化

ESTBeaconManager

然后

startRangingBeaconsInRegion

在委托方法中:

-(void)beaconManager:(ESTBeaconManager *)manager
     didRangeBeacons:(NSArray *)beacons
            inRegion:(ESTBeaconRegion *)region

获取信标数组和每个信标:

ibeacon.major
ibeacon.minor

答案 3 :(得分:1)

Estimote的信标和信标区域类基于Apple的类,并且(我假设)以相同的方式工作)在我完成的工作中,我忽略了它们的类并使用了CLBeacon和CLBeaconRegion。

假设Estimote的类的工作方式与Apple的相同,如果您设置一个没有主要版本号和次要版本号的信标区域,那么任何具有匹配UUID的信标都会触发incomingRegion和exitRegion通知,但主要和次要值都是空白的。通知。除非您要求和接收范围调用,否则您不会获得触发事件的信标的主要值和次要值。

如果您创建具有主要值或主要值和次要值的信标区域,则只会获得与这些值匹配的信标的通知。在这些情况下,您获得的区域对象将包括您在创建区域时指定的主要值或主要/次要值,但这些值不会更改。