CLLocationManager startMonitoringForRegion:设备重启后不重新启动应用程序

时间:2013-12-06 20:26:58

标签: ios core-location cllocationmanager geofencing

好的,所以我目前有一个应用程序,我使用CLLocationManager startMonitoringForRegion方法注册要监控的地理围栏。当应用程序位于前台和后台时,此工作正常。

我也设置了合适的plist值:

UIBackgroundModes :{location}
UIRequiredDeviceCapabilities: {location-services}

什么不起作用

设备重启后,应用程序未重新启动。如果我在输入背景之前设置startMonitoringSignificantLocationChanges,我可以强制执行此操作。但是这种方法使用了更多的电池寿命,而且我不会一直需要这个位置,只要我打破地理围栏。

地区的文档说:

In iOS, the regions you register with the location manager persist between launches of your application. If a region crossing occurs while your iOS app is not running, the system automatically wakes it up (or relaunches it) in the background so that it can process the event. When relaunched, all of the regions you configured previously are made available in the monitoredRegions property of any location manager objects you create.

问题

是否可以(在使用地理围栏区域时)让系统在系统重启后重启我的应用程序,而不使用startMonitoringSignificantLocationChanges

编辑:我的目标是iOS6& iOS7

1 个答案:

答案 0 :(得分:6)

在这里回答我自己的问题。

虽然您确实需要使用startMonitoringSignificantLocationChanges让系统在设备重启后唤醒应用程序。如果用户强制关闭它,那么什么都不会唤醒应用程序。

出于我的目的,我无需将UIBackgroundModes设置为location。此设置通常用于仅需要细粒度位置更新的应用程序(例如,使用startUpdatingLocation)。使用startMonitoringSignificantLocationChanges时无需设置背景模式。