在后台以低精度更新地理围栏,以高精度更新地图上的位置无法按预期工作

时间:2017-03-12 20:08:45

标签: ios swift mapkit core-location cllocationmanager

我正在编写一个使用该位置的应用程序有两个目的:

1)它在位置管理器实例和委托中显示用户在地图上的位置(具有类似导航的准确性),包含在视图控制器中

2)在后台,即使在关闭时,它也会获得最近的20个兴趣点(存储在userdefaults中的列表)并为这些点激活地理围栏,因此在到达附近时会注意到用户。这是通过尽可能最低的精度(3km)来节省电力,并在第一次打开应用程序时启动的另一个位置管理器实例中设置。

问题是,CLLocationmanager对象似乎是静态的,所以当我从两个不同的地方调用它时,它返回的是相同的实例,并且准确性,间隔等似乎是同样,因为两个代表都是一直被同时打电话。

因此,一直调用geofences设置方法,当用户只是移动一点时,我想让地图反映出来。

2 个答案:

答案 0 :(得分:1)

是的,只有一位位置经理。因此,当您进入后台并返回前景时,请重新配置它。在这些时候将其委托切换到另一个对象可能很方便(这样每个委托对象都可以关注一个问题)。

答案 1 :(得分:0)

  

CLLocationmanager对象似乎是静态的

烨! CLLocationmanager object是一个Singleton,因此无法创建不同的对象。要解决您的问题,您需要检查您的申请状态,可以使用以下方式完成:

[[UIApplication sharedApplication] applicationState] == UIApplicationStateBackground

了解应用程序状态后,您可以相应地配置CLLocationmanager的对象属性。希望它有所帮助!