带有无效恢复数据的NSURLSession

我使用[NSURLSessionConfiguration defaultSessionConfiguration]来configuration我的networking会话。

我通过调用cancelByProducingResumeData:来暂停任务cancelByProducingResumeData:产生一个恢复数据,并将其保存到磁盘。 当我想重新启动任务时,我打电话给downloadTaskWithResumeData: 它运行良好,直到我重新启动应用程序。

我暂停任务后,我杀了应用程序。 然后我再次启动我的应用程序,并调用downloadTaskWithResumeData ,我发现恢复数据是无效的。

我parsing恢复数据到NSDictionary,并得到NSURLSessionResumeInfoLocalPath ,这是

"/private/var/mobile/Containers/Data/Application/5DD071C3-9D5E-4D76-9F74-57B6C92445CB/tmp/CFNetworkDownload_IUI6kg.tmp" 。 我尝试访问这个文件,但它不存在。

我的问题是我怎样才能继续使用简历数据下载任务后,我重新启动我的应用程序。

谢谢。

任何时候你重新启动你的应用程序,tmp下的所有东西都会被清理干净,即使我试图复制所有的* .tmp,并且在应用程序重新启动时粘贴回来,也会发生错误

我的build议是,你检查* .tmp文件是否可访问,如果没有,从开始重新下载

我遇到过这个问题。 我发现在iOS8应用程序重新启动后,沙箱path将会改变。 但resumeDatalogging旧的沙箱path,即让下载任务找不到resumeData。 所以我通过键“ NSURLSessionResumeInfoLocalPath ”来更新logging在沙箱中的沙箱path,它工作:

 NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:resumeDataPath]; NSString *resumeDataFileName = [dic[@"NSURLSessionResumeInfoLocalPath"] lastPathComponent]; NSString *newTempPath = NSTemporaryDirectory(); NSString *newResumeDataPath = [newTempPath stringByAppendingPathComponent:resumeDataFileName]; [dic setValue:newResumeDataPath forKey:@"NSURLSessionResumeInfoLocalPath"]; [dic writeToFile:resumeDataPath atomically:YES];