2015-05-19 70 views
1

我創建了一個下載任務。我已將cancelByProducingResumeData的應用程序中的任務取消並保存到磁盤。當用戶重新啓動應用程序並單擊恢復按鈕時,我又通過self.downloadTask = [session downloadTaskWithResumeData:resumableData];啓動了下載任務。但是這給了錯誤。NSURLSession downloadTaskWithResumeData在重新啓動應用後發生錯誤

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

編輯:我已經驗證了仿真的tmp目錄包含downloadData但無法訪問。

+0

聲音* *正是這樣的情況:http://stackoverflow.com/questions/28360750/nsurlsession-with-invalid-resume-data – Petesh

+0

@Petesh是的,我已經看到,但這不是解決方案。 – codester

+0

我已驗證'tmp'包含重新啓動後的數據。 – codester

回答

0

重新啓動應用程序鏈接上的tmp文件resuminData 無效將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]; 
相關問題