【问题标题】:Downloading File with NSURLSessionDownloadTask使用 NSURLSessionDownloadTask 下载文件
【发布时间】:2017-11-02 08:57:46
【问题描述】:

我需要使用我的桌面应用程序下载文件。首先,我创建了一个用于下载视频文件的简单 iOS 项目,参考此web site。有用。我想为 macOS 做几乎相同的事情。

class ViewController: NSViewController, URLSessionDownloadDelegate {
    var downloadTask: URLSessionDownloadTask!
    var backgroundSession: URLSession!
    var assetFile = String() // file in application's sandboxed folder

    override func viewDidLoad() {
        super.viewDidLoad()

        let backgroundSessionConfiguration = URLSessionConfiguration.background(withIdentifier: "backgroundSession")
        backgroundSession = Foundation.URLSession(configuration: backgroundSessionConfiguration, delegate: self, delegateQueue: OperationQueue.main)
    }

    override func viewDidAppear() {
        super.viewDidAppear()
        let url = URL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4")!
        downloadTask = backgroundSession.downloadTask(with: url)
        downloadTask.resume()
    }

    func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) {
        let fileManager = FileManager()
        do {
            let assetURL = URL(fileURLWithPath: assetFile)
            try fileManager.moveItem(at: location, to: assetURL)
        } catch {
            print("An error occurred while moving file to destination url")
        }
    }

    func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) {

    }

    func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) {
        downloadTask = nil
        if (error != nil) {
            print(error!.localizedDescription) // <<< error here?
        } else {
            print("The task finished transferring data successfully")
        }
    }
}

如果我运行它,我会收到一条显示“未知错误”的日志消息。我想知道我做错了什么?我确实将App Transport Security Setting > Allow Allow Arbitrary Loads 设置为YES。谢谢。

【问题讨论】:

    标签: swift cocoa nsurlsessiondownloadtask


    【解决方案1】:

    由于您的应用已被沙盒化,请确保在沙盒功能中启用了传出连接。

    ATS 设置对 HTTPS 连接没有影响

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-31
      • 1970-01-01
      • 1970-01-01
      • 2014-04-12
      • 1970-01-01
      • 1970-01-01
      • 2019-09-05
      相关资源
      最近更新 更多