Reanudar tareas con NSURLSession cuando la aplicación se quita de background o en el reinicio del dispositivo

He comprobado muchos documentos, pero no pude encontrar la solución para reanudar tareas con NSURLSession cuando la aplicación se eliminó del background o en el reinicio del dispositivo.

Estoy tratando con amazon S3 para cargar algunos files, en que soy capaz de

  1. Suba el file a S3 utilizando NSURLSessionUploadTask, cuando la aplicación está en primer plano y en segundo plano.
  2. Reanude la tarea cuando la aplicación se bloqueó debido a cualquier otro motivo durante la carga y si la aplicación no se elimina del background.
  3. Reinicia la tarea si reinicio el dispositivo mientras subo y si la aplicación no se quita de background.

Aquí está mi código para get la funcionalidad del curriculum vitae escrito en el método applicationDidBecomeActive de appdelegate.

// Initialize session config and the background session NSURLSession *l_taskSession = [self backgroundSession]; [l_taskSession getTasksWithCompletionHandler:^(NSArray *dataTasks, NSArray *uploadTasks, NSArray *downloadTasks) { if([uploadTasks count]) { for (int i=0; i<[uploadTasks count]; i++) { NSURLSessionUploadTask *uploadRequestTask = (NSURLSessionUploadTask*)[uploadTasks objectAtIndex:i]; [uploadRequestTask resume]; NSLog(@"-------- Upload Resumed ------- "); } } else if(![uploadTasks count]) { NSLog(@"------- There are no previous tasks -------"); } }]; 

Ahora el problema está en ambos casos (2 y 3) mencionados anteriormente, no da una list de tareas que estaban en progreso, cuando quité la aplicación del background y la ejecuté nuevamente, según el código cae en otra condición y condición

2015-06-12 17: 12: 32.902 AppName [162: 60b] ——- No hay tareas anteriores ——-

Entonces, mi pregunta es ¿es posible reanudar las tareas cuando la aplicación se elimina del background? O puede alguien simplemente darme enlaces de reference donde puedo encontrar la respuesta para el mismo, cualquier ayuda es apreciada.

Finalmente llego a la conclusión de que,

Si el sistema termina una aplicación de iOS y la relanza, la aplicación puede usar el mismo identificador para crear un nuevo object de configuration y session y recuperar el estado de las transferencias que estaban en curso en el momento de la terminación. Este comportamiento solo se aplica a la terminación normal de la aplicación por parte del sistema.

Si el usuario termina la aplicación desde la pantalla de multitarea, el sistema cancela todas las transferencias de background de la session.

Para más detalles, consulte la documentation de Apple en NSURLSessionConfiguration Class Reference aquí .