作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
在使用信标(iOS 设备)进行测试时,我发现监听器信标出现了一些意外行为。 locationManager:didEnterRegion 方法不会被调用,即使信标进入区域也是如此。但是 locationManager:didRangeBeacons:inRegion: 被正确调用,并且检测到的信标显示在那里。有没有人经历过这样的事情。
最佳答案
检查您的方法是否按以下方式实现。在viewDidLoad
中,最后开始监控
self.beaconRegion.notifyOnEntry=YES;
self.beaconRegion.notifyOnExit=YES;
self.beaconRegion.notifyEntryStateOnDisplay=YES;
[self.locationManager startMonitoringForRegion:self.beaconRegion];
监控开始后,请求您定义区域的状态
- (void) locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region
{
[self.locationManager requestStateForRegion:self.beaconRegion];
}
状态确定后,开始测距信标
-(void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region
{
if (state == CLRegionStateInside)
{
//Start Ranging
[manager startRangingBeaconsInRegion:self.beaconRegion];
}
else
{
//Stop Ranging here
}
}
并根据您的需要实现以下方法...
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
{
self.statusLbl.text=@"Entered region";
}
-(void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region
{
self.statusLbl.text=@"Exited region";
}
-(void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region
{
if(beacons.count>0)
{}
}
希望这能解决您的问题。
关于ios - 位置管理器 :didEnterRegion not called when a beacon is detected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19246493/
我是一名优秀的程序员,十分优秀!