如何在 iOS 应用程序中每 n 分钟获取一次后台位置更新?
Posted
技术标签:
【中文标题】如何在 iOS 应用程序中每 n 分钟获取一次后台位置更新?【英文标题】:How do I get a background location update every n minutes in iOS app? 【发布时间】:2011-12-02 11:41:54 【问题描述】:我很感激这个问题似乎已经在这里得到了回答: How do I get a background location update every n minutes in my ios application?
但是,尽管暗示了解决方案,但如果有人可以发布一些示例代码来说明其实际工作原理,我将不胜感激。
非常感谢,
杰克
【问题讨论】:
@wjans - 你能在这里帮助你最终使用的代码吗?非常感谢! 这个问题你解决了吗? 这个任务你完成了吗??请分享信息!我会很感激的 【参考方案1】:您需要在应用程序启动期间订阅核心位置。
类似的东西
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyThreeKilometers;
并添加委托
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
【讨论】:
对不起,我应该说。我已经把这个排序的主要部分。我设置了一个按钮,当按下该按钮时,它会获取当前位置并将发布请求传递给服务器。我想要的是,当应用程序在后台时,每 30 分钟自动发生一次。 即使应用在后台,也会调用核心位置委托。 感谢您的帮助。这可行,但问题是我希望更新相距甚远(例如每小时一次),这会消耗大量电池寿命。有没有办法触发位置管理器,然后每隔很长时间再次停止它。【参考方案2】:试试这个,你会得到更新的纬度和经度..in didUpdateToLocation...
//in view did load
locationManager = [[CLLocationManager alloc]init];
if([CLLocationManager locationServicesEnabled])
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
locationManager.distanceFilter = 1000.0f;
[locationManager startUpdatingLocation];
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
appDelegateObj.latitude= [[NSString alloc]initWithFormat:@"%g",newLocation.coordinate.latitude];
appDelegateObj.longitude = [[NSString alloc]initWithFormat:@"%g",newLocation.coordinate.longitude];
【讨论】:
只是发表与上述相同的评论。感谢您的帮助: 对不起,我应该说的。我已经整理了这个的主要部分。我设置了一个按钮,当按下该按钮时,它会获取当前位置并将发布请求传递给服务器。我想要的是,当应用程序在后台时,每 30 分钟自动发生一次。 这样您就可以添加按钮并在按钮按下时调用此调用线程 30 分钟。所以每 30 分钟线程将调用它自己的操作并将此方法添加到线程操作中,因此它将每 30 分钟调用一次..以上是关于如何在 iOS 应用程序中每 n 分钟获取一次后台位置更新?的主要内容,如果未能解决你的问题,请参考以下文章