【问题标题】:iOS - CLLocationManager background operation with MKMapView in foregroundiOS - CLLocationManager 后台操作与 MKMapView 在前台
【发布时间】:2014-01-22 05:29:11
【问题描述】:

问题“iOS 中的背景 GPS。这可能吗?”不回答这个问题。

我有一个地图应用程序,它在应用程序处于活动状态时使用MKMapView 及其内置位置服务。当应用程序在后台时,我仍然希望交付和处理位置更新。为此,我使用CLLocationManager

我在 plist 文件中启用了location updates,并在AppDelegate 代码中调用startUpdateLocation,该代码也充当CLLocationManager 的代表。这就是“iOS 中的后台 GPS。这可能吗?”中提到的所有内容,

当应用程序处于活动状态时,一切正常,获取更新没有问题。

但是当进入后台模式时,指示正在使用位置服务的小箭头会亮起,但大约十秒钟后会消失。在这短暂的时间段内,该应用似乎能够接收位置更新,但当箭头消失时,不再有更新。

我做错了吗? MKMapView 是否会覆盖 CLLocationManager 想要做的事情?

【问题讨论】:

  • 嗨,Russell,您的问题可能已经得到解答in this duplicate, or closely related, question
  • @MichaelDautermann - 请仔细阅读这个问题,你会发现我正在做该参考中所述的一切。如果您添加了关闭请求,请删除它。
  • @Krumelur - 好吧,我就是这么想的,不需要在那里优化。
  • @Krumelur - 修改了代码,仍然表现出相同的行为 - 相应地修改了问题。

标签: ios location


【解决方案1】:

要在后台接收位置更新,请执行以下操作:

  • 确保开始 CLLocationManager
  • 确保您的info.plist 中有以下值: "必需的后台模式" = "应用注册位置更新"
  • 避免在locationManager:didUpdateToLocation 中做很多复杂的事情。尤其要避免 UI 操作。您的执行时间受 iOS 限制,并非所有 API 都可用。

一切都有据可查,请参阅documentation 中的“在后台获取位置事件”。

【讨论】:

    【解决方案2】:

    确保在您的设置中启用“后台应用刷新”。您可以使用backgroundRefreshStatus of UIApplication 以编程方式检查。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-29
      • 1970-01-01
      • 2016-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多