ios - 有时仅在 iOS 的后台更新位置

标签 ios objective-c core-location

我正在开发一个使用位置的应用程序。该应用程序可以在 map 上保存路线,如果用户想要记录路线,该应用程序必须在后台存储用户位置,然后在 map 上显示。

为了在后台保存位置,我使用了在应用程序的 plist 上定义的属性 NSLocationAlwaysUsageDescription

NSLocationAlwaysUsageDescription on the app plist

我的问题是用户可能永远不想记录任何路线,但由于我定义应用程序必须在后台存储位置的方式,我的应用程序似乎总是在后台运行并且浪费了很多即使在后台工作可能不需要电池。

我还在 viewDidAppear 和 viewDidDisappear 方法上启动和停止位置更新,以避免在我不在 map 屏幕上时更新位置:

    - (void)viewDidAppear:(BOOL)animated
{
    ...

    [[SBLocationManager sharedInstance] startUpdatingLocation];
    ...
}

- (void)viewDidDisappear:(BOOL)animated
{
    [[SBLocationManager sharedInstance] stopUpdatingLocation];
    [self.stationProvider stopProviding];
}

我一直在寻找那个,但我没有找到一种方法来在我想要的时候打开/关闭背景位置。 您知道是否有一种方法可以在您使用应用程序时在后台“启用/禁用”位置,让用户对其进行配置?

非常感谢您的帮助:) 在这里见!


最佳答案

将此添加为答案,以便其他人有类似查询时可以引用。

这里是类似的问题 Periodic iOS background location updates

为了防止电池耗尽,它需要根据我们的要求打开 - 关闭位置更新。还有一些属性, desiredAccuracy 和 distanceFilter 可以这样设置,这样它就不会频繁调用位置服务。 (如给定链接中所述)

希望这对您有所帮助。

关于ios - 有时仅在 iOS 的后台更新位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27528291/

相关文章:

ios - 如何在 ibeacon 中使用唯一标识符?

iphone - 滑动删除 UITableView

ios - 每个 AVPlayerLayer 一个 AVPlayer 与多个 AVPlayer

ios - 如何从配置文件中获取代码签名身份的名称?

objective-c - NSURLConnection永不结束

ios - C 风格二维数组作为 ivar

ios - 使用 Core Location 在 Apple Watch 上获得精确的室内位置更新?

objective-c - locationManager 是否为 :didEnterRegion works when stopUpdatingLocation is called

ios - 动态更新 UITableView 高度和数据

ios - cocoa 代码-如何在 iPhone 的文档中查看创建的文件夹?