【问题标题】:Why does my iOS app get killed even though I ask for location updates in the background?为什么即使我在后台请求位置更新,我的 iOS 应用程序也会被杀死?
【发布时间】:2013-04-22 14:45:03
【问题描述】:

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

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

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

 [application beginBackgroundTaskWithExpirationHandler:^{ 

    NSDate *dateOfTermination = [NSDate date];              

}];
}

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

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

任何线索/建议?

谢谢

卡尔。

【问题讨论】:

    标签: iphone ios gps core-location


    【解决方案1】:

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

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

    • 不断请求新的位置(最迟在您的到期 处理程序)
    • 使用“重大变化定位服务”,它会唤醒你 每当位置发生变化时

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

    【讨论】:

      猜你喜欢
      • 2017-01-13
      • 2016-11-08
      • 2017-06-03
      • 2016-04-04
      • 1970-01-01
      • 2015-05-15
      • 1970-01-01
      • 2020-02-15
      相关资源
      最近更新 更多