Fondo de iOS Ubicación que no envía solicitud http

Mi aplicación necesita rastrear la ubicación de los usuarios en segundo plano, pero no puede enviar una solicitud de "obtención". La solicitud http se envía inmediatamente cuando la aplicación llega al primer plano. Estoy usando RestKit para todas mis solicitudes de red y seguíeste tutorial para configurar mi servicio de ubicaciones de fondo. En mi aplicaciónDidEnterBackground

-(void)applicationDidEnterBackground:(UIApplication *)application
{
    self.bgLocationManager = [[CLLocationManager alloc] init];
    self.bgLocationManager.delegate = self;
    [self.bgLocationManager startMonitoringSignificantLocationChanges];
    NSLog(@"Entered Background");
}

y detengo MonitoreoSignificantLocationChange en mi aplicaciónDidBecomeActive delegate

Este es mi delegado de locationManager donde acepto la nueva ubicación actualizada y la envío a mi servidor

-(void) locationManager:(CLLocationManager *)manager 
    didUpdateToLocation:(CLLocation *)newLocation 
           fromLocation:(CLLocation *)oldLocation
{
    NSLog(@"I am in the background");
    bgTask = [[UIApplication sharedApplication]
                beginBackgroundTaskWithExpirationHandler:
                ^{
                      [[UIApplication sharedApplication] endBackgroundTask:bgTask];
                 }];
                 // ANY CODE WE PUT HERE IS OUR BACKGROUND TASK

    NSString *currentLatitude = [[NSString alloc]
                                  initWithFormat:@"%g",
                                  newLocation.coordinate.latitude];
    NSString *currentLongitude = [[NSString alloc]
                                   initWithFormat:@"%g",
                                   newLocation.coordinate.longitude];
    NSString *webToken = [[NSUserDefaults standardUserDefaults] stringForKey:@"userWebToken"];
    NSLog(@"I am in the bgTask, my lat %@", currentLatitude);

    NSDictionary *queryParams;
    queryParams = [NSDictionary dictionaryWithObjectsAndKeys:webToken, @"auth_token",  currentLongitude, @"lng", currentLatitude, @"lat", nil];
    RKRequest* request = [[RKClient sharedClient] post:@"/api/locations/background_update" params:queryParams delegate:self];
    //default is RKRequestBackgroundPolicyNone
    request.backgroundPolicy = RKRequestBackgroundPolicyContinue;

    // AFTER ALL THE UPDATES, close the task

    if (bgTask != UIBackgroundTaskInvalid)
    {
        [[UIApplication sharedApplication] endBackgroundTask:bgTask];
        bgTask = UIBackgroundTaskInvalid;
    }
}

Las solicitudes de red funcionan según lo planeado, pero no se llamarán en segundo plano. ¿Hay pasos adicionales que necesito? En mi info.plist tengo la tecla Modos de fondo requeridos y los servicios de ubicación como el valor.

EDITAR

También me referí aesta respuesta SO pasada. Realicé algunas pruebas colocando registros a lo largo de la llamada didUpdateToLocation y todos fueron llamados, pero no se envió la solicitud 'get'. En cambio, cuando finalmente lanzo la aplicación al primer plano, envió todas las solicitudes de red (más de 10).

EDITAR (2) Agregué RKRequestBackgroundPolicyContinuar a mi solicitud pero no cambió mis resultados. (Como puedes veraquí en el fondo de carga / descarga para restkit). Veo que Restkit inicializa el host pero no puedo enviar la solicitud hasta que la aplicación se active.

RESPONDER

RestKit debe estar haciendo algo que está prohibido en el fondo. El uso de un NSURLRequest funciona perfectamente.

NSMutableURLRequest * urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.example.com/api/locations/background_update"]];
[urlRequest setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[urlRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setHTTPBody:jsonData];

NSHTTPURLResponse  *response = nil;
[NSURLConnection sendSynchronousRequest:urlRequest
                      returningResponse:&response
                                  error:&error];

Está bien usar una solicitud síncrona ya que no hay una interfaz de usuario que interrumpa las tareas en segundo plano

Respuestas a la pregunta(3)

Su respuesta a la pregunta