iOS網路-04-大檔案下載
阿新 • • 發佈:2019-02-08
- 支援斷點下載,自動記錄停止下載時斷點的位置
- 遵守NSURLSessionDownloadDelegate協議
- 使用NSURLSession下載大檔案,被下載檔案會被自動寫入沙盒的臨時資料夾tmp中
- 下載完畢,通常需要將已下載檔案移動其他位置(tmp資料夾中的資料被定時刪除),通常是cache資料夾中
- 詳細的下載步驟
-
設定下載任務task的為成員變數
@property (nonatomic, strong) NSURLSessionDownloadTask *task;
-
獲取NSURLSession物件
NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[[NSOperationQueue alloc] init]]
-
初始化下載任務任務
self.task = [session downloadTaskWithURL:(此處為下載檔案路徑URL)];
-
實現代理方法
/**每當寫入資料到臨時檔案的時候,就會呼叫一次該方法,通常在該方法中獲取下載進度*/ - (void)URLSession:(NSURLSession *)session downloadTask: (NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite { // 計算下載進度
-
操作任務狀態
/**開始/繼續下載任務*/ [self.task resume]; /**暫停下載任務*/ [self.task suspend];
-