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

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

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

 [application beginBackgroundTaskWithExpirationHandler:^{

    NSDate *dateOfTermination = [NSDate date];

}];
}


在监视上面的代码时,当它确实被踢出时,NSDate对象始终相隔10分钟。

但是:为了使事情更加混乱,我遇到很多情况,该应用程序很乐意在后台运行30分钟以上而不会终止。作为一项额外的测试,我将iPhone放在了法拉第笼中,以确保不调用位置委托更新(通过回读书面日志文件来确认);因此似乎可以排除。

有任何线索/建议吗?

谢谢

卡尔

最佳答案

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

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


不断要求一个新的位置(最迟到期)
处理程序)
使用“重大更改位置服务”,它将唤醒您
每当位置改变


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

10-08 07:43
查看更多