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];