NSURLSession downloadTaskWithResumeData在重新启动应用程序后给出错误

时间:2015-05-19 14:51:53

标签: ios objective-c nsurlsession nsurlsessiondownloadtask

我创建了一个下载任务。我已使用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 个答案:

答案 0 :(得分:0)

重新启动resuminData 中的tmp 文件上的应用程序链接无效将resuminData中的字段 - “NSURLSessionResumeInfoLocalPath”更改为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];