[iOS] captura la ubicación del usuario: aclaración

Tengo una aplicación que captura la ubicación del usuario y envío esta información a mi servidor.

He iniciado el servicio de LocationManager con:

- (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;
}

y parándolo con:

-(void) stopLookingForLocation{

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

    isUpdatingLocation = NO;

}

Entonces, cuando detecto un cambio de ubicación de usuario:

- (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
    }

}

y todo funciona correctamente. (Supongo).

Cuando la aplicación entra en modo de fondo, invoco este método dentro de appDelegate - (void) applicationDidEnterBackground: (UIApplication *) application {[locationManager startMonitoringSignificantLocationChanges]; }

y cuando la aplicación vuelva a primer plano:

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

Pero tengo algunas dudas. De esta manera, si la aplicación está en estado cerrado, ¿mi aplicación continúa comunicando la ubicación al servidor?

¿Cómo puedo enviar la ubicación solo cuando estoy en segundo plano o en primer plano?

EDITAR: También he establecido:

UIBackgroundModes ubicación

Respuestas a la pregunta(1)

Su respuesta a la pregunta