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

标签 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 放在法拉第笼中,以确保不会调用位置委托(delegate)更新(通过回读书面日志文件确认);所以似乎可以排除。

有什么线索/建议吗?

谢谢

卡尔。

最佳答案

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

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

  • 不断请求新位置(最迟在您的到期日 处理程序)
  • 使用“显着变化位置服务”,它会叫醒你 每当位置改变时

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

关于iphone - 为什么即使我在后台请求位置更新,我的 iOS 应用程序也会被杀死?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16149988/

相关文章:

iphone - iOS 滚动界面 - FoodSpotting 注册界面

objective-c - 拆分大型 iOS View Controller ?

iphone - iOS : Date conversion results in wrong date

ios - 以字符串格式获取 Web 服务响应

google-maps - BlackBerry 和基于 map 的应用程序,如 Yelp 和 Google Map

java - Android计算2个GPS坐标之间的角度

ios - 在 iOS 应用程序中包含文件的最佳实践

iphone - UIWebView 编辑 HTML 内容

javascript - 如何创建在 React-Native 中检测自动位置的 map

iphone - 自定义 UINavigationBar 的最惯用的 iOS5 方式?