我使用[NSURLSessionConfiguration defaultSessionConfiguration]
来配置我的网址会话。
我通过调用cancelByProducingResumeData:
来暂停任务以生成恢复数据,并将其保存到磁盘。当我想重新启动任务时,我会调用downloadTaskWithResumeData:
。它很有效,直到我重新启动应用程序。
我暂停任务后杀了应用程序。然后我再次启动我的应用程序,并致电downloadTaskWithResumeData
,我发现简历数据无效。
我将简历数据解析为NSDictionary并获取NSURLSessionResumeInfoLocalPath
,即
"/private/var/mobile/Containers/Data/Application/5DD071C3-9D5E-4D76-9F74-57B6C92445CB/tmp/CFNetworkDownload_IUI6kg.tmp"
。我尝试访问此文件,但它不存在。
我的问题是,在重新启动应用后,如何使用简历数据继续下载任务。
感谢。
答案 0 :(得分:1)
任何时候你重新启动你的应用程序,tmp下的所有东西都会被清理,我遇到了同样的事情,即使我试图复制所有* .tmp,并在应用程序重新启动时粘贴,它会抛出一个错误
我的建议是,检查* .tmp文件是否可访问,如果不是,则从开始重新下载
答案 1 :(得分:1)
我遇到了这个问题。我发现在iOS8中重启应用程序后,沙箱路径会发生变化。但resumeData记录了旧的沙箱路径,即让下载任务找不到resumeData。因此,我通过键“ NSURLSessionResumeInfoLocalPath ”更新沙箱中记录的沙箱路径,它确实有效:
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];