Нашел хороший пример работы с новым NSURLSession :
iOS7_Multitasking .
В примере реализована функиция остановки загрузки и сохранения resumeData для последующей докачки:
- (void) stopDownloadWithTaskIdentifier:(NSUInteger)taskIdentifier
{
KDownloadInfo *di = [self.downloadInfoDictionary objectForKey:kDownloadInfoKey(taskIdentifier)];
if (di && di.downloadTask) {
[di.downloadTask cancelByProducingResumeData:^(NSData *resumeData) {
NSLog(@"RESUME DATA %@", resumeData);
if (resumeData) {
di.resumeData = resumeData;
}
}];
}
}
Если начать загрузку и вызвать метод по тапу на кнопку stop, то в обработчике cancelByProducingResumeData resumeData будет не пустой.
Если вызвать метод по событию UIApplicationWillTerminateNotification, то есть начать загрузку и убить процесс приложения, то resumeData всегда пустая.
Почему так происходит и как добиться сохранение процесса загрузки при завершении приложения?