2012-05-11 2 views
2

Я получаю текущее местоположение с помощью CLLocationManager, и я получаю значения широты и долготы текущего местоположения. Я не использовал Mapview в своем приложении. Поэтому всякий раз, когда изменяется текущее местоположение, я хочу обновить текущее местоположение на сервере. И каждые 5 минут мне нужно вызвать веб-службу и обновить текущее местоположение на сервере в фоновом режиме и режиме переднего плана.Как получить текущее местоположение в фоновом режиме на iPhone?

-(void) getCurrentLocation 
{ 
    // To get the current location of the place 
    locationManager = [[CLLocationManager alloc] init]; 
    locationManager.delegate = self; 
    locationManager.distanceFilter = kCLDistanceFilterNone; //whenever we move 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest; //100 m 
    //Start the location manager, then only updates the current location 
    [locationManager startUpdatingLocation]; 
} 

/In Location manager delegate method, if the location is updated it will call and get the values from the newLocation using CLLocation 
-(void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{ 
    CLLocation *location = [locationManager location]; 

    // Configure the new event with information from the location 
    CLLocationCoordinate2D coordinate = [location coordinate]; 

    NSString *lat = [NSString stringWithFormat:@"%f", coordinate.latitude]; 
    NSString *lon = [NSString stringWithFormat:@"%f", coordinate.longitude]; 
    NSLog(@"dLatitude : %@", lat); 
    NSLog(@"dLongitude : %@",lon); 

    self.reverseGeocoder = [[[MKReverseGeocoder alloc] initWithCoordinate:newLocation.coordinate] autorelease]; 
    reverseGeocoder.delegate = self; 
    [reverseGeocoder start]; 


    //Stop the location manager 
    [locationManager stopUpdatingLocation]; 

} 

Когда бы ни было изменено место, в это время я хочу получить широту и долготу для конкретного местоположения.

Спасибо!

ответ

-1

Во-первых, если вам нужна ваша программа для работы на переднем плане и в фоновом режиме, добавьте требуемый фоновый режим в качестве службы определения местоположения в info.plist вашего проекта. Получите местоположение как NSString и попробуйте отправить URL-адрес URL-адресу на сервер с использованием синхронного или асинхронного типа.

0

Если вам необходимо использовать стандартную службу определения местоположения, чтобы обеспечить постоянное обновление местоположения для пользователя (даже в фоновом режиме), вы можете заявить о своем приложении как о необходимости использования служб определения местоположения, включив ключ UIBackgroundModes (с «местоположением», значение) в файле Info.plist вашего приложения.

0

Используйте следующий код для задачи backgound и foreground.

UIApplication *app = [UIApplication sharedApplication]; 

bgTask = [app beginBackgroundTaskWithExpirationHandler:^{ [app endBackgroundTask:bgTask]; 
    bgTask = UIBackgroundTaskInvalid; 
}]; 

[NSTimer scheduledTimerWithTimeInterval:300 target:self selector:@selector(updateLocation) userInfo:nil repeats:YES]; 

-(void)updateLocation{ 

    // write the code to update location here. this will execute even if in background or foreground 
} 
Смежные вопросы