为什么即使我在后台要求更新位置,我的iOS应用程序也会被杀?

时间:2013-04-22 14:45:04

标签: iphone ios gps core-location

我的iOS应用程序有时会被杀死,即使我在“必需的背景模式”下的plist中放置了“应用程序寄存器进行位置更新”。

- (void)applicationDidEnterBackground:(UIApplication *)application
{
 NSDate *dateEnteredIntoBackground = [NSDate date];

 FSLog(@"*** ENTERING BACKGROUND ***");

 [application beginBackgroundTaskWithExpirationHandler:^{ 

    NSDate *dateOfTermination = [NSDate date];              

}];
}

在监视上面的代码的同时,当它被踢出时,NSDate对象总是相隔10分钟。

然而:为了让事情更加令人困惑,我很多时候应用程序很乐意在后台运行超过30分钟而不会终止。作为一项额外的测试,我将iPhone置于法拉第笼中,以确保不会调用位置代理更新(通过回读书面日志文件来确认);所以似乎可以排除。

任何线索/建议?

由于

卡尔。

1 个答案:

答案 0 :(得分:5)

您实际上必须请求新位置以防止您的应用被暂停。如果您在一段时间内未申请新位置,iOS将暂停您的应用。

作为解决方法,您可以执行以下操作:

  • 继续请求新位置(最迟在您的到期时间内) 处理程序)
  • 使用“重大更改位置服务”,它会唤醒您 每当位置发生变化时

更多详细信息可以在"App States and Multitasking""Making your App Location Aware"中找到,这两者都是Apple官方文档的一部分。