Я немного запутался в том, как воспользоваться преимуществами новых функций переноса iOS 7 NSURLSession и AFNetworking ( версии 2 и 3).
Я увидел сеанс WWDC 705 - What’s New in Foundation Networking, и они продемонстрировали загрузку фона, которая продолжается после прекращения или даже сбоя приложения.
Это делается с использованием нового API application:handleEventsForBackgroundURLSession:completionHandler: и того факта, что делегат сессии в конечном итоге получит обратные вызовы и может выполнить свою задачу.
Итак, мне интересно, как использовать его с AFNetworking (если возможно), чтобы продолжить загрузку в фоновом режиме.
Проблема заключается в том, что AFNetworking удобно использует блочный API для выполнения всех запросов, но если приложение завершено или сбой, эти блоки также исчезли. Итак, как я могу выполнить задачу?
Или, может быть, я что-то пропустил...
Позвольте мне объяснить, что я имею в виду:
Например, мое приложение - приложение для обмена фотографиями, скажем, что у меня есть объект PhotoMessage, который представляет одно сообщение, и этот объект имеет такие свойства, как
-  
state- описать состояние загрузки фотографий. -  
resourcePath- путь к окончательному загруженному файлу фотографии. 
Поэтому, когда я получаю новое сообщение с сервера, я создаю новый объект PhotoMessage и начинаю загрузку его ресурса.
PhotoMessage *newPhotoMsg = [[PhotoMessage alloc] initWithInfoFromServer:info];
newPhotoMsg.state = kStateDownloading;
self.photoDownloadTask = [[BGSessionManager sharedManager] downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
    NSURL *filePath = // some file url
    return filePath;
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
    if (!error) {
        // update the PhotoMessage Object
        newPhotoMsg.state = kStateDownloadFinished;
        newPhotoMsg.resourcePath = filePath;
    }
}];
[self.photoDownloadTask resume];   
Как вы можете видеть, я использую блок завершения для обновления этого объекта PhotoMessage в соответствии с полученным ответом.
Как я могу выполнить это с помощью переноса фона? Этот блок завершения не будет вызываться, и в результате я не могу обновить newPhotoMsg.