1

我刚拿到我的 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

4 回答 4

2

根据ESTBeaconRegion.h文件,anESTBeaconRegion是一个子类,CLBeaconRegion它有一个major NSNumber *属性和一个minor NSNumber *属性。

所以你应该能够做到:

- (void)beaconManager:(ESTBeaconManager *)manager didEnterRegion:(ESTBeaconRegion *)region {
    NSNumber *major = region.major;
    NSNumber *minor = region.minor;
    ...
} 
于 2013-12-01T03:57:52.533 回答
2

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

于 2013-12-01T13:45:53.457 回答
1

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

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

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

于 2013-12-01T04:43:00.403 回答
1

看例子: Estimote / iOS-SDK / ProximityDemo

看起来您需要:
实例化

ESTBeaconManager

然后

startRangingBeaconsInRegion

在委托方法中:

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

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

ibeacon.major
ibeacon.minor
于 2013-12-01T04:08:47.747 回答