- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
目前我正在努力从服务器下载一个文件,而且效果很好。
class Downloader:NSObject,URLSessionDownloadDelegate {
/*
SOME PROPERTIES & 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
}
}
}
请指导我了解这种情况。提前致谢
最佳答案
只有满足以下条件才能恢复下载:
资源自您第一次请求以来没有改变
任务是 HTTP 或 HTTPS GET 请求
服务器在其响应中提供 ETag 或 Last-Modified header (或两者)
服务器支持字节范围请求
临时文件因磁盘空间压力未被系统删除
→ 来源:https://developer.apple.com/documentation/foundation/urlsessiondownloadtask/1411634-cancel
关于ios - 如何查看当前 URLSessionDownloadTask 的恢复能力?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46316524/
我创建了一个类来使用 URLSession 下载文件。 我注意到一个奇怪的行为,当设备处于 Debug模式时,它正在下载文件。但是,如果我删除设备并手动运行应用程序,则下载根本无法进行。有时重新连接设
目前我正在努力从服务器下载一个文件,而且效果很好。 我的问题是在实际下载开始之前我怎么知道 url 是否具有恢复能力? 下面是一些代码片段, class Downloader:NSObject,URL
NSURLSessionDownloadDelegate协议(protocol)中有3个方法。 URLSession:downloadTask:didFinishDownloadingToURL:,
当我尝试从 url 下载文件时,文件会被下载并存储在文件夹中。但是当我尝试打开该文件时。该文件似乎已损坏,我无法打开该 pdf 文件。 我已经使用下面提到的代码尝试了所有可能性。但它们都不起作用。任何
当应用程序处于关闭状态或我的下载状态发生变化时,例如从等待状态到下载状态或完成状态,我想在核心数据中保存 URLSessionDownloadTask。 我的自定义类的所有其他属性都完美存储,但应用程
试图理解为什么在 WatchKit 3.0 中安排后台 URLSessionDownloadTask 时。函数 handle(_ backgroundTasks: Set)从不触发 WKURLSess
我是一名优秀的程序员,十分优秀!