10

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

当我开始监视一个区域时阅读文档,我将告诉我的代表一个特定的区域正在被监视,但是,didEnterRegion并且didExitRegion永远不会被解雇。

我的代表开火了:

-(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:从未被调用。

有人面临同样的行为吗?

4

3 回答 3

5

有几个项目需要检查。解决我的问题的一个是在您的设备设置中启用后台应用程序刷新(请参见下面的屏幕截图)。我已禁用此功能以节省电池电量。如果禁用此功能,监控将不起作用。

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

iBeacon StartMonitoringForRegion 不起作用


后台程序刷新

于 2014-02-07T16:33:08.730 回答
0

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

可能是 iOS 认为没有区域转换正在发生 - 你总是“在”该区域,因此没有转换。在后台发生转换最多可能需要 15 分钟(尽管如果您在前台进行测距,“out”应该在 4 秒内,“in”应该在 1 秒内。参见http://developer.radiusnetworks。 com/2013/11/13/ibeacon-monitoring-in-the-background-and-foreground.html

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

于 2013-11-27T13:07:56.300 回答
0

我几乎尝试了所有方法,但没有成功。然后我只是重新启动了我的 iPhone ......它开始工作了。极好的。我在使用 Estimote Beacon 时遇到了这个问题。

于 2014-04-07T13:19:58.063 回答