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对象