0

我的 iOS 应用程序有时会被杀死,即使我在 plist 中的“必需的后台模式”下放置了“用于位置更新的应用程序注册”。

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

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

 [application beginBackgroundTaskWithExpirationHandler:^{ 

    NSDate *dateOfTermination = [NSDate date];              

}];
}

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

但是:更令人困惑的是,我经常遇到应用程序乐于在后台运行超过 30 分钟而没有终止的情况。作为附加测试,我将 iPhone 放入法拉第笼中,以确保不会调用位置委托更新(这通过读回写入的日志文件来确认);所以似乎可以排除。

任何线索/建议?

谢谢

卡尔。

4

1 回答 1

5

您实际上必须请求新的位置以防止您的应用程序被暂停。如果您在一定时间内没有请求新的位置,iOS 将暂停您的应用程序。

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

  • 不断请求新位置(最迟在您的过期处理程序中)
  • 使用“重大变化位置服务”,只要位置发生变化,它就会唤醒你

更多细节可以在Apple 官方文档的“App States and Multitasking”“Make your App Location Aware”中找到。

于 2013-04-22T15:52:10.513 回答