【问题标题】:iOS app being killed while in the background?iOS应用程序在后台被杀死?
【发布时间】:2015-05-15 07:25:51
【问题描述】:

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

我向应用程序添加了一些日志记录(通过 logeries.com api),有时当应用程序进入背景音乐时它会停止记录,然后我可以看到一条消息,表明应用程序委托的 didfinishlaunching 再次被调用。这让我觉得应用程序被杀死了?是否有任何关于如何对其进行编码以在后台持续运行的可靠示例?我需要的功能与导航应用程序非常相似,在该应用程序处于活动状态时会不断监控位置。

我试图通过在大约一分钟后关闭 gps 然后每 5 分钟启动一次备份来节省一些电池寿命,因为这是我需要的频率。

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

我觉得我现在对这应该如何工作存在根本性的误解,而且我在苹果开发者中心没有遇到任何与此相关的示例。

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

【问题讨论】:

    标签: ios geolocation core-location background-process


    【解决方案1】:

    我猜你在背景中使用了显着的位置变化? 在我看来,这是正确的方法。

    如果您使用它,会发生以下情况:

    1. 您的应用位于前台并获取位置
    2. 应用程序进入后台并等待重大的位置更改。 在这种模式下,您可能会收到更少的定位电话。并且只有在您搬家时。
    3. 应用被用户暂停(自动)或杀死
    4. iOS 的位置发生了重大变化,它会调用所有正在记录这些内容的应用,并且它们会在后台被唤醒。
    5. 回到 3。

    来自Apple doc

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

    这就是再次调用didfinishlaunching 的原因

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-02
      • 1970-01-01
      • 2020-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多