Возобновление задач с использованием NSURLSession при удалении приложения из фона или при перезагрузке устройства

Я проверил множество документов, но не смог найти решения для Возобновление задач с использованием NSURLSession, когда приложение удаляется из фона или при перезагрузке устройства.

Я имею дело с amazon S3 для загрузки некоторых файлов, в которых я могу

  1. Загрузить файл в S3 с помощью NSURLSessionUploadTask, когда приложение находится как на переднем плане, так и в фоновом.
  2. Возобновить задачу, когда приложение сбой по какой-либо другой причине во время загрузки и если приложение не удаляется из фона.
  3. Перезапустить задачу, если я перезагружаю устройство во время загрузки и если приложение не удаляется из фона.

Вот мой код для достижения функциональности резюме, написанный в методе applicationDidBecomeActive приложения 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 -------");
     }
 }];

Теперь проблема заключается в том, что в обоих случаях (2 и 3), упомянутых выше, он не дает списка задач, которые выполнялись, когда я удалял приложение из фона и снова запускал, в соответствии с кодом он попадает в другое условие и журналы

2015-06-12 17:12:32.902 AppName[162:60b] ------- Предыдущих задач нет -------

Итак, мой вопрос: можно ли возобновить выполнение задач, когда приложение удалено из фона? Или может кто-нибудь просто дать мне справочные ссылки, где я могу найти ответ на то же самое, любая помощь приветствуется.


person Ajit Satarkar    schedule 12.06.2015    source источник
comment
Нашли ли вы какое-либо решение этой проблемы?   -  person Ahad Khan    schedule 15.06.2015
comment
@AhadKhan еще нет, отсутствие документации, я все еще ищу ... Если я найду, я опубликую здесь   -  person Ajit Satarkar    schedule 15.06.2015


Ответы (1)


Наконец я прихожу к выводу, что,

Если приложение iOS завершается системой и перезапускается, приложение может использовать тот же идентификатор для создания нового объекта конфигурации и сеанса и получения статуса передачи, которая выполнялась на момент завершения. Это поведение применимо только для нормального завершения работы приложения системой.

Если пользователь закрывает приложение с экрана многозадачности, система отменяет все фоновые передачи сеанса.

Дополнительные сведения см. в документации Apple по ссылке на класс NSURLSessionConfiguration здесь.

person Ajit Satarkar    schedule 15.06.2015