gpt4 book ai didi

ios - 在 iOS 8 中的计时器/定期更新背景中的位置

转载 作者:可可西里 更新时间:2023-11-01 04:46:25 24 4
gpt4 key购买 nike

如果应用程序处于后台状态或前台状态,我希望每 5 分钟更新一次用户的位置。这是一款对位置非常敏感的应用程序,因此始终了解位置非常重要。

在 SO 上有很多与此问题相关的答案,但其中很多都涉及 iOS 6 及更早版本。在 iOS 7 之后,很多后台任务都发生了变化,我很难找到在后台实现定期位置更新的方法。

最佳答案

您需要使用 CoreLocation 的委托(delegate)。一旦你得到一个坐标,停止 CoreLocation,设置一个定时器在 5 分钟后再次启动它。

在 iOS 8 中,您需要为 NSLocationWhenInUseUsageDescription 和/或 NSLocationAlwaysInUseDescription 设置一个 plist 条目。

Apple 文档非常清楚地说明了如何执行所有这些操作。

-(void)startUpdating{
self.locationManager = [[CLLocationManager alloc]init];
self.locationManager.delegate = self;
[self.locationManager requestWhenInUseAuthorization];
[self.locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
[self.locationManager startUpdatingLocation];

}

-(void)timerFired{
[self.timer invalidate];
_timer = nil;
[self.locationManager startUpdatingLocation];
}

// CLLocationDelegate
- (void)locationManager:(CLLocationManager *)manager
didUpdateLocations:(NSArray *)locations{
if(locations.count){
// Optional: check error for desired accuracy
self.location = locations[0];
[self.locationManager stopUpdatingLocation];
self.timer = [NSTimer scheduledTimerWithTimeInterval:60 * 5 target:self selector:@selector(timerFired) userInfo:nil repeats:NO];
}
}

关于ios - 在 iOS 8 中的计时器/定期更新背景中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25980778/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com