Ios 后台模式下的位置更新仅10分钟

Ios 后台模式下的位置更新仅10分钟,ios,objective-c,Ios,Objective C,我正在开发一款iPhone应用程序,即使应用程序在后台也需要不断更新位置 我所做的是: 设置位置更新的背景模式 将desiredAccuracy=kCLLocationAccuracyBestForNavigation设置为desiredAccuracy 实施-(作废)位置管理器:(CLLocationManager*)管理器更新位置:(NSArray*)位置 致电[locationManager startUpdatingLocation] 当应用程序进入后台时,它只会在10分钟内更新位置。然

我正在开发一款iPhone应用程序,即使应用程序在后台也需要不断更新位置

我所做的是:

  • 设置位置更新的背景模式
  • 将desiredAccuracy=kCLLocationAccuracyBestForNavigation设置为desiredAccuracy
  • 实施-(作废)位置管理器:(CLLocationManager*)管理器更新位置:(NSArray*)位置
  • 致电[locationManager startUpdatingLocation]
  • 当应用程序进入后台时,它只会在10分钟内更新位置。然后,更新停止

    有人知道为什么吗? 如何在后台进行长时间的位置更新


    谢谢

    来自苹果的文档

    您可以从Xcode项目中“功能”选项卡的“后台模式”部分启用位置支持。(您也可以通过在应用程序的Info.plist文件中包含带有位置值的UIBackgroundModes键来启用此支持。)启用此模式不会阻止系统挂起应用程序,但它会告诉系统,只要有新的位置数据要传递,就应该唤醒应用程序。因此,此键可以有效地让应用程序在后台运行,以便在位置更新发生时进行处理


    似乎设置背景模式就足够了。我在我正在开发的一个应用程序中实现了这一点,我看到的唯一区别是,我将
    暂停位置自动更新设置为
    ,,以在我的QT应用程序中解决这个问题,当应用程序进入后台时,我将停止更新位置,将精度从“最佳”降低到KCLLOCATIONACURACYNEARESTENMERS,并将距离过滤器从“无”设置为50米,然后启动数据位置


    如果您需要更精确的位置数据,可以尝试使用较低的过滤器。

    我认为设备将在10分钟后锁定(进入睡眠状态)。你只能在设备未锁定的情况下在后台运行。不,10分钟是应用程序在挂起之前可以在后台继续工作的限制。因此,如果设备处于睡眠模式,应用程序仍然可以在后台工作?我有一个应用程序可以在后台每5分钟保存一次位置,所以我认为这里没有超时问题。可能只是没有为后台位置更新调用正确的方法。您可能需要考虑使用以下方法在后台保存位置:AllowDeferredLocationUpdatesUntiltTraveled、performFetchWithCompletionHandler、didFinishDeferredUpdatesWithErrorOh!谢谢西蒙!我在代码中添加了pausesLocationUpdateAutomatically=NO,现在可以正常工作了!