Ios 子类ClBeacon来存储一些额外的信息

Ios 子类ClBeacon来存储一些额外的信息,ios,cllocationmanager,cllocation,ibeacon,Ios,Cllocationmanager,Cllocation,Ibeacon,可以使用CLBeacon的子类来存储一些额外的信息,并在委托方法中处理这些信息 - (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region 其中,信标是MyCustomBeaconSubclass的数组是的,这是可能的。各种框架正是这样做的。关键是您还必须围绕CoreLocation函数编写包装器类,以便在获得D

可以使用
CLBeacon
的子类来存储一些额外的信息,并在委托方法中处理这些信息

- (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region

其中,
信标
MyCustomBeaconSubclass的数组

是的,这是可能的。各种框架正是这样做的。关键是您还必须围绕CoreLocation函数编写包装器类,以便在获得
DidRangeBeaConsincinRegion
回调时,获得子类的实例,而不是
CLBeacon

构建所有这些包装器类可能很复杂,使用现成的框架来实现这一点通常更容易。我的公司提供了一个名为的,允许您将额外信息作为键/值对附加到iBeacons。您可以使用web界面为云中的iBeacons分配键/值对。然后使用ProximityKit类来确定iBeacons的范围,这允许您完全按照描述访问额外的信息

下面是一个示例,它从范围内的iBeacon检索名为“messageForUser”的字段的值。请注意,这使用了名为
pkibacon
CLBeacon
子类:

- (void)proximityKit:(PKManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(PKRegion *)region {
    [beacons enumerateObjectsUsingBlock:^(id beaconObj, NSUInteger beaconIdx, BOOL *beaconStop) {        
        PKIBeacon *beacon = (PKIBeacon *) beaconObj;        
        // The value of messageForUser is set in the ProximityKit web interface
        NSString *messageForUser = [beacon.attributes objectForKey:@"messageForUser"]; 
        NSLog(@"The value of messageForUser for iBeacon %@ %ld %ld is: %@", beacon.uuid, beacon.major, beacon.minor, messageForUser);
    }];
}

全面披露:我是。

的总工程师。是的,您可以创建CLBeacon的子类,但您需要使用从CoreLocation接收的CLBeacon对象手动实例化它

让我们调用您的子类MyBeacon,您必须创建一个init方法,如

- (id)initWithBeacon:(CLBeacon *)beacon
因为CoreLocation只返回CLBeacon对象而不返回MyBeacon对象,所以您需要自己创建MyBeacon对象