我的 iOS 应用程序有时会被杀死,即使我在 plist 中的“必需的后台模式”下放置了“应用程序注册位置更新”。
- (void)applicationDidEnterBackground:(UIApplication *)application
{
NSDate *dateEnteredIntoBackground = [NSDate date];
FSLog(@"*** ENTERING BACKGROUND ***");
[application beginBackgroundTaskWithExpirationHandler:^{
NSDate *dateOfTermination = [NSDate date];
}];
}
在监控上面的代码时,当它确实被踢出时,NSDate 对象总是相隔 10 分钟。
但是:让事情变得更加困惑的是,我遇到很多情况,应用程序很乐意在后台运行超过 30 分钟而不会终止。作为附加测试,我将 iPhone 放在法拉第笼中,以确保不会调用位置委托(delegate)更新(通过回读书面日志文件确认);所以似乎可以排除。
有什么线索/建议吗?
谢谢
卡尔。
最佳答案
您实际上必须请求新的位置以防止您的应用程序被暂停。如果您在一段时间内没有请求新位置,iOS 将暂停您的应用。
作为解决方法,您可以执行以下操作:
- 不断请求新位置(最迟在您的到期日 处理程序)
- 使用“显着变化位置服务”,它会叫醒你 每当位置改变时
更多详细信息可以在"App States and Multitasking"中找到在"Making your App Location Aware" , 都是 Apple 官方文档的一部分。
关于iphone - 为什么即使我在后台请求位置更新,我的 iOS 应用程序也会被杀死?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16149988/