NSURLSession downloadTaskWithResumeData дает ошибку после перезапуска приложения

Я создал задачу загрузки. Я отменил задачу в моей заявке с cancelByProducingResumeData и сохранен на диск. Когда пользователь перезапустит приложение и нажмет кнопку возобновить, я снова запустил задачу загрузки self.downloadTask = [session downloadTaskWithResumeData:resumableData];, Но это дает ошибку.

Invalid resume data for background download. Background downloads must use http or https and must download to an accessible file

РЕДАКТИРОВАТЬ: я подтвердил tmp каталог на симуляторе содержит downloadData, но не может получить к нему доступ.

1 ответ

После перезапуска приложения ссылка на файл tmp в resuminData недействительна. Измените поле -"NSURLSessionResumeInfoLocalPath" в resuminData на правильный путь к файлу tmp.

использовать:

NSMutableDictionary* resumeDictionary = [NSPropertyListSerialization propertyListWithData:resumingData options:NSPropertyListMutableContainers format:NULL error:&error];
...
NSString* badFilePath = [resumeDictionary objectForKey:@"NSURLSessionResumeInfoLocalPath"];
...
[resumeDictionary setObject:trueTmpfile forKey:@"NSURLSessionResumeInfoLocalPath"];
...
NSData* newResumingData = [NSPropertyListSerialization dataFromPropertyList:resumeDictionary format:NSPropertyListXMLFormat_v1_0 errorDescription:&errorDesc];
Другие вопросы по тегам