startMonitoringForRegion不会触发didEnterRegion和didExitRegion

时间:2013-11-27 11:44:01

标签: ios cllocationmanager ibeacon

我正在使用estimote信标和区域进行一些测试。

在我开始监控某个区域时阅读文档我将告诉我的代表正在监控某个特定区域,但didEnterRegiondidExitRegion永远不会被触发。

我的代表大火:

-(void)beaconManager:(ESTBeaconManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(ESTBeaconRegion *)region

- (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region

我没有检查 locationManager:didFailWithError中是否发生错误:

目前我正在使用状态手动运行两个私有方法,这些方法与didEnter和didExit一样工作 - 在这种情况下,我也能够监控该区域,但我没有得到为什么 locationManager:didEnterRegion locationManager:didExitRegion永远不会被调用。

有人面临同样的行为吗?

3 个答案:

答案 0 :(得分:5)

有几个要检查的项目。解决我问题的方法是在设备的设置中启用后台应用刷新(参见下面的屏幕截图)。我把这个禁用作为省电措施。如果禁用此功能,监控将无效。

如果这不能解决您的问题,那么您可以阅读一篇很好的帖子,详细说明要排除故障的所有项目。

  

iBeacon StartMonitoringForRegion Doesn’t Work


Background App Refresh

答案 1 :(得分:0)

这应该有效。我想看看你的其余代码设置监控,我会把NSLog语句放在你的didEnterRegion didExitRegion和didDetermineState中(也记录状态值)。

可能是iOS认为没有发生区域转换 - 你总是"在"该地区,因此没有过渡。过渡可能需要长达15分钟才能在后台进行(尽管如果你在前景中进行测距,那么#34; out"和#34;"和#34;见http://developer.radiusnetworks.com/2013/11/13/ibeacon-monitoring-in-the-background-and-foreground.html

您可以通过在受监控区域设置region.notifyEntryStateOnDisplay=YES;来强制进入/退出区域回调,然后点击肩膀按钮。这应该强制监控回调。如果你这样做并且没有看到我建议在上面添加的日志语句,我会非常惊讶。

答案 2 :(得分:0)

我已经尝试了几乎所有的东西而且它没有用。 然后我只是重新启动我的iPhone ......它开始工作了。难以置信。 我对Estimote Beacons有这个问题。