5

我正在尝试locationManager获取我的位置并将其更新到我的网络服务。

- (void)locationManager:(CLLocationManager *)manager 
didUpdateToLocation:(CLLocation *)newLocation 
fromLocation:(CLLocation *)oldLocation {
    //some code here
}

这很正常,但是如果我的应用程序进入后台或手机屏幕被锁定,则可能会暂停更新位置。无论如何,我如何获得位置?

4

3 回答 3

1

我建议您设置一个处理程序,例如此示例:

TTLLocationHandler

为所需的新近度和准确性配置处理程序。为通知“LocationHandlerDidUpdateLocation”设置一个监听器。将您的代码上传到在收到该通知时调用的方法中。

如果您不需要细粒度的细节,我建议您在后台使用显着LocationChange 监控的电池节省选项。在这种情况下,您不需要在 info.plist 中添加后台模式,也不会不必要地浪费资源。该应用程序将被唤醒,并且您的方法仅在用户发生重大移动时调用。处理程序中有可配置的选项,要求在后台和/或前台进行持续监控,并设置新近度和准确度阈值。

请参阅 LMPinTracker 类,了解如何响应并将数据保存到 Web 或本地。有关使用的讨论,请参阅线程Invoke get current coordinates every few seconds without NSTimer

于 2012-10-24T12:42:54.330 回答
1

阅读关于它的完整博客文章:iPhone 背景 GPS:精确到 500m,对于步行交通来说还不够

这是一个教程:iOS多任务处理:后台位置

于 2012-10-08T08:09:26.430 回答
0

将此密钥添加到您的应用程序列表

Required background modes

将其标记为数组,并在其上item0添加此值

App registers for location updates

该应用程序现在也将在后台获取位置数据。

于 2012-10-24T12:51:12.300 回答