[iOS] capturando a localização do usuário: esclarecimento

Eu tenho um aplicativo que captura a localização do usuário e envia essa informação para o meu servidor.

Eu iniciei o serviço LocationManager com:

- (CLLocationManager *)locationManager {
    if (_locationManager == nil) {
        _locationManager = [[CLLocationManager alloc] init];
        _locationManager.delegate = self;
        isUpdatingLocation = NO;
    }
    return _locationManager; 
}

-(void) startLookingForLocation{

    [self locationManager].desiredAccuracy = kCLLocationAccuracyBest;
    [self locationManager].distanceFilter = 250;

    if([[self locationManager]respondsToSelector:@selector(setPausesLocationUpdatesAutomatically:)])
        [[self locationManager] setPausesLocationUpdatesAutomatically:YES];

    if([[self locationManager]respondsToSelector:@selector(setActivityType:) ])
        [[self locationManager] setActivityType:CLActivityTypeFitness];

    [[self locationManager] startUpdatingLocation];
    [[self locationManager] startUpdatingHeading];

    isUpdatingLocation = YES;
}

e parando com:

-(void) stopLookingForLocation{

    [[self locationManager] stopUpdatingLocation];
    [[self locationManager] stopUpdatingHeading];

    isUpdatingLocation = NO;

}

Então, quando eu detecto uma mudança de localização do usuário:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {

    [self setCurrentLocation:newLocation];

    BOOL isInBackground = NO;
    if ([UIApplication sharedApplication].applicationState == UIApplicationStateBackground)
    {
        isInBackground = YES;
    }

    if (isInBackground)
    {
        UIBackgroundTaskIdentifier bgTask = [[UIApplication sharedApplication]
                  beginBackgroundTaskWithExpirationHandler:
                  ^{
                      [[UIApplication sharedApplication] endBackgroundTask:bgTask];
                  }];

        // Send user-location to my server

        if (bgTask != UIBackgroundTaskInvalid)
        {
            [[UIApplication sharedApplication] endBackgroundTask:bgTask];
            bgTask = UIBackgroundTaskInvalid;
        }
    }
    else
    {
        // Send user-location to my server
    }

}

e tudo funciona corretamente. (Eu suponho).

Quando o aplicativo entra em modo de segundo plano, invoco esse método em appDelegate - (void) applicationDidEnterBackground: (UIApplication *) application {[locationManager startMonitoringSignificantLocationChanges]; }

e quando o aplicativo retornar ao primeiro plano:

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    [locationManager stopMonitoringSignificantLocationChanges];
}

Mas tenho algumas dúvidas. Dessa forma, se o aplicativo estiver no status fechado, meu aplicativo continuará a comunicar a localização ao servidor?

Como posso enviar a localização apenas quando estou em segundo plano ou em primeiro plano?

EDIT: Eu também defini:

Localização do UIBackgroundModes

questionAnswers(1)

yourAnswerToTheQuestion