iOS应用程序在后台被杀?

时间:2015-03-12 22:39:09

标签: ios geolocation core-location background-process

我创建了一个即使在后台也能跟踪用户位置的应用。然后,应用程序将用户gps coords记录到核心数据,并在用户选择结束会话时将其发送给应用程序。这似乎在开发时工作正常,但现在我得到的报告显示该应用程序缺少大量的gps积分。

我在应用程序中添加了一些日志记录(通过loge tries.com api),看来有时当应用程序输入背景音乐时它会停止记录,然后我会看到一条消息,即应用程序委托进行了完成。再次被调用。这让我觉得该应用程序正在被杀?有没有关于如何编码以在后台连续运行的可靠实例?我需要的功能非常类似于导航应用程序,在该应用程序中,位置在活动时会持续受到监控。

我试着通过在一分钟左右关闭gps然后每隔5分钟关闭一次GPS来节省一些电池寿命,因为这是我需要的频率。

它基于以下代码:http://mobileoop.com/background-location-update-programming-for-ios-7

我觉得我对此应该如何运作有一个根本的误解,我还没有遇到苹果开发者中心的任何一个例子。

非常感谢任何帮助或指示!

1 个答案:

答案 0 :(得分:0)

我猜您在后台使用了重要的位置变化? 在我看来,这是正确的方法。

以下是您正在使用它时发生的事情:

  1. 您的应用位于前台并获取位置
  2. 应用程序进入后台并等待重要的位置更改。 在此模式下,您可能会获得较少的位置呼叫。只有你在移动。
  3. 应用程序暂停(自动)或被用户杀死
  4. iOS获得了重要的位置更改,它会调用所有正在录制这些内容的应用,并且它们会在后台被唤醒。
  5. 回到3。
  6. 来自Apple doc

      

    重要更改位置服务还可以唤醒当前暂停或未运行的iOS应用,以便提供新的位置数据。

    这就是再次调用didfinishlaunching的原因