假设我的代码如下:
- (void)locationManager:(CLLocationManager *)manager
didRangeBeacons:(NSArray *)beacons
inRegion:(CLBeaconRegion *)region {
//Handle beacons found during ranging
}
-(void)initBeaconRegion
{
NSUUID *proximityUUID = [[NSUUID alloc] initWithUUIDString:@"E2C56DB5-DFFB-48D2-B060-D0F5A71096E0"];
self.beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:proximityUUID major:345 minor:678 identifier:@"MyBeaconIdentifier"];
self.beaconRegion.notifyEntryStateOnDisplay = NO; //Used for Monitoring
self.beaconRegion.notifyOnEntry = YES; //Used for Monitoring
self.beaconRegion.notifyOnExit = YES; //Used for Monitoring
}
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region {
if ([region isKindOfClass:[CLBeaconRegion class]]) {
CLBeaconRegion *beaconRegion = (CLBeaconRegion *)region;
//now start ranging
// [_locationManager startRangingBeaconsInRegion:beaconRegion];
}
}
- (void)viewDidLoad {
[super viewDidLoad];
self.locationManager = [[CLLocationManager alloc] init];
[self initBeaconRegion];
[self.locationManager startRangingBeaconsInRegion:self.beaconRegion];
NSLog(@"monitored regions %@",self.locationManager.monitoredRegions);
}
和一些名为xBeacon广告的iPad应用程序使用相同的UUID,主要和次要,这不起作用。我究竟做错了什么?我应该使用应用程序接近广告设备,还是等待更长时间?
尝试使用Estimote beacon应用程序,两个应用程序都可以正常工作,因为我在Mac上的Beacon扫描仪上查看它。
答案 0 :(得分:2)
您希望调用信标监控回调,但您没有开始监控 - 您正在启动范围。尝试更改此行:
[self.locationManager startRangingBeaconsInRegion:self.beaconRegion];
为:
[self.locationManager startMonitoringRegion:self.beaconRegion];
此外,您需要将self.locationManager.delegate = self
设置为@ luca-corti建议。
如果您仍然没有收到回叫,请尝试使用我的Locate app验证您的测试信标实际上是否使用您期望的标识符进行传输。
答案 1 :(得分:1)
在实例化self.locationManager.delegate = self
后,您需要设置CLLocationManager
。否则代表团将无法工作。