我正在尝试获取位置更新特别是当应用程序处于后台时。当应用程序进入后台时,它应该每n分钟发送一次位置更新 首先我尝试了前景,它工作正常。我将相同的代码复制到applicationDidEnterBackground,我无法打印位置更新。我不知道我被击中的地方请帮助我。
在viewDidLoad
中- (void)viewDidLoad {
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
[locationManager startUpdatingLocation];
}
和
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
int degrees = newLocation.coordinate.latitude;
double decimal = fabs(newLocation.coordinate.latitude - degrees);
int minutes = decimal * 60;
double seconds = decimal * 3600 - minutes * 60;
NSString *lat = [NSString stringWithFormat:@"%d° %d' %1.4f\"",
degrees, minutes, seconds];
latLabel.text = lat;
degrees = newLocation.coordinate.longitude;
decimal = fabs(newLocation.coordinate.longitude - degrees);
minutes = decimal * 60;
seconds = decimal * 3600 - minutes * 60;
NSString *longt = [NSString stringWithFormat:@"%d° %d' %1.4f\"",
degrees, minutes, seconds];
longLabel.text = longt;
}
我尝试在AppDelegate中粘贴这些方法。它无法正常工作:(。帮帮我
答案 0 :(得分:2)
您不能简单地将代码粘贴到那里并希望您的应用程序在后台运行。您必须将其注册为在后台运行的应用程序。请参阅this article
中的实施长时间运行的后台任务部分答案 1 :(得分:2)
根据评论的讨论,我建议你在plist中创建条目。
UIBackgroundModes for location in plist
这有帮助。
修改强>
当您记录坐标时,您需要在NSUserDefaults中的某个地方节省时间。之后,当您下次登录时,您需要找到当前时间之间的差异并存储在NSUserDefaults中。如果你想要的间隔比记录坐标。
希望这有帮助。