菜鸟教程小白 发表于 2022-12-11 18:44:29

ios - 如何检查当前 URLSessionDownloadTask 的恢复能力?


                                            <p><p>目前我正在从服务器下载文件,效果很好。</p><hr/>
我的问题是,在实际下载开始之前,我怎么知道 url 是否恢复 <strong>capability</strong>?
<br/>
下面是一些代码片段,<br/><p></p>

<pre><code>class Downloader:NSObject,URLSessionDownloadDelegate {
    /*
   SOME PROPERTIES &amp; DECLARATIONS
   */

    override init() {
      super.init()
      let backgroundSessionConfiguration = URLSessionConfiguration.background(withIdentifier: url.absoluteString)
      backgroundSessionConfiguration.networkServiceType = .default
      self.defaultSession = URLSession(configuration: backgroundSessionConfiguration, delegate: self, delegateQueue: OperationQueue.main)
    }

    func start(_ block:DownloaderCompletionHandler?) {
      guard self.input == nil else { return }
      guard self.output == nil else { return }
      if let data = self.resumableData {
            self.downloadTask = self.defaultSession.downloadTask(withResumeData: data)
      }else {
            let request = URLRequest(url: self.input!, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 0.60)
            self.downloadTask = self.defaultSession.downloadTask(with: request)
      }
      self.downloadTask.resume()
    }
    func pause() {
      self.downloadTask.cancel { (data) in
            self.resumableData = data
      }
    }
}
</code></pre>

<p>请在这种情况下指导我。
<strong>提前致谢</strong></p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>只有满足以下条件才能恢复下载:</p>
<ul>
<li><p>自您第一次请求资源以来,该资源没有改变</p>
</li>
<li><p>任务是 HTTP 或 HTTPS GET 请求</p>
</li>
<li><p>服务器在其响应中提供 ETag 或 Last-Modifiedheader (或两者)</p>
</li>
<li><p>服务器支持字节范围请求</p>
</li>
<li><p>临时文件未因磁盘空间压力而被系统删除</p>
</li>
</ul>
<p>→ 来源:<a href="https://developer.apple.com/documentation/foundation/urlsessiondownloadtask/1411634-cancel" rel="noreferrer noopener nofollow">https://developer.apple.com/documentation/foundation/urlsessiondownloadtask/1411634-cancel</a> </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何检查当前 URLSessionDownloadTask 的恢复能力?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/46316524/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/46316524/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何检查当前 URLSessionDownloadTask 的恢复能力?