locationmanager didenterregion 没有被调用
Posted
技术标签:
【中文标题】locationmanager didenterregion 没有被调用【英文标题】:locationmanager didenterregion doesn't get called 【发布时间】:2014-08-11 22:00:21 【问题描述】:假设我的代码如下所示:
- (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);
一些 iPad 应用程序称为 xBeacon 广告具有相同的 UUID,主要和次要,这不起作用。我究竟做错了什么?我应该使用应用程序接近广告设备,还是等待更长时间?
对 Estimote 信标应用进行了同样的尝试,这两个应用都可以正常工作,因为我在 Mac 上的 Beacon Scanner 上进行了检查。
【问题讨论】:
【参考方案1】:您希望调用信标监控回调,但您并未开始监控——您正在开始测距。尝试更改此行:
[self.locationManager startRangingBeaconsInRegion:self.beaconRegion];
到:
[self.locationManager startMonitoringRegion:self.beaconRegion];
另外,您需要按照@luca-corti 的建议设置self.locationManager.delegate = self
。
如果您仍然没有收到回调,请尝试使用我的Locate app 来验证您的测试信标实际上是在使用您期望的标识符进行传输。
【讨论】:
startMonitoringBeaconsInRegion 不走运(Xcode 中没有声明的选择器),但是您的应用可以正确看到它 另外,请仔细检查您的信标标识符并确保它们完全正确。如果您收到空测距回调,则表示您的应用没有看到信标。【参考方案2】:您需要在实例化CLLocationManager
后设置self.locationManager.delegate = self
。否则委托将不起作用。
【讨论】:
谢谢。现在 didRangeBeacons 一直被调用,但是设置了空的信标。 就是这样。接受答案,欢迎来到 ***。我可能建议阅读 CLLocationmanager 文档以了解您需要调用哪些方法来满足您的需求。以上是关于locationmanager didenterregion 没有被调用的主要内容,如果未能解决你的问题,请参考以下文章
locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER) 使用 Wi-Fi 总是返回 false
我应该在 locationManager:didFailWithError: 中发送 [locationManager stopUpdatingLocation] 吗?
locationManager.getLastKnownLocation() 返回 null
为啥 LocationManager 没有 lastKnown 位置?
不适用于 Android Studio-locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this)