web-dev-qa-db-ja.com

Alamofireでダウンロードリクエストを一時停止/再開/キャンセルする方法

進行中のAlamofireダウンロードを使用してファイルをダウンロードしていますが、特定のリクエストを一時停止/再開/キャンセルする方法がわかりません。

@IBAction func downloadBtnTapped() {

 Alamofire.download(.GET, "http://httpbin.org/stream/100", destination: destination)
     .progress { (bytesRead, totalBytesRead, totalBytesExpectedToRead) in
         println(totalBytesRead)
     }
     .response { (request, response, _, error) in
         println(response)
     }
}


@IBAction func pauseBtnTapped(sender : UIButton) {        
    // i would like to pause/cancel my download request here
}
19
Zeeshan

プロパティを使用してdownloadBtnTappedで作成されたリクエストへの参照を保持し、cancelのそのプロパティでpauseBtnTappedを呼び出します。

var request: Alamofire.Request?

@IBAction func downloadBtnTapped() {
 self.request = Alamofire.download(.GET, "http://httpbin.org/stream/100", destination: destination)
}

@IBAction func pauseBtnTapped(sender : UIButton) {
  self.request?.cancel()
}
34
mattt

request.cancel()は、ダウンロードの進行状況をキャンセルします。一時停止して続行したい場合は、以下を使用できます。

var request: Alamofire.Request?

@IBAction func downloadBtnTapped() {
 self.request = Alamofire.download(.GET, "http://yourdownloadlink.com", destination: destination)
}

@IBAction func pauseBtnTapped(sender : UIButton) {
  self.request?.suspend()
}

@IBAction func continueBtnTapped(sender : UIButton) {
  self.request?.resume()
}

@IBAction func cancelBtnTapped(sender : UIButton) {
  self.request?.cancel()
}
21
marmaralone