1

我正在使用 GeoFencing 设置区域并在用户进入或离开该区域时执行某些任务。Bt 它对我不起作用,我正在使用 gollowing 代码

CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(some values,some values);
    CLRegion *region = [[CLRegion alloc]initCircularRegionWithCenter:coord radius:15.0 identifier:@"SF"];
    [locationManager startMonitoringForRegion:region desiredAccuracy:kCLLocationAccuracyBest];

但是当我关闭应用程序并且应用程序正在监视并且我离开该区域或进入时,没有一个代表didEnterRegiondidExitRegion被调用。

4

4 回答 4

3

您定义半径为 15m。那太小了。首先,尝试 50m 或更多。看看地图应用程序,如果你真的进入了那个地区。
此外,我希望您的意思是“发送到后台”,而不是关闭。
确保您已将应用程序设置为允许在后台运行?(通过 plist)

更新:

最后,事实证明您终止了该应用程序。那么你当然不会再得到任何位置事件了。
解决方案:不要通过双击home键然后选择白色十字来终止它,只需单击home键将其关闭,然后它就有机会在后台运行。

Update2: 即使应用程序被终止,ios 也会在它注册到位置监控服务时重新启动它:来自CllLocationManager 类参考

如果您启动此服务并且您的应用程序随后终止,如果有新事件到达,系统会自动将应用程序重新启动到后台......

于 2013-03-22T11:45:57.833 回答
1

在头文件中添加 CLLocationManagerDelegate。确保你添加了

locationManager.delegate = self;

尝试增加半径并检查。

于 2013-03-22T11:48:38.737 回答
1

首先增加您为该特定位置提供的半径并再次检查它是否不起作用,然后按照本教程中提供的一些简单步骤,您可以轻松地在您的应用程序中实现地理围栏。

参考:Apple 文档

于 2015-05-13T19:29:07.053 回答
0

您定义半径为 15m。那太小了。首先,尝试 50m 或更多。看看地图应用程序,如果你真的进入了那个地区。此外,我希望您的意思是“发送到后台”,而不是关闭。确保您已将应用程序设置为允许在后台运行?(通过 plist)

于 2016-05-23T08:39:14.560 回答