使用 NSURLSessionDownloadTask 下载文件

番茄

我需要用我的桌面应用程序下载一个文件。首先,我创建了一个用于下载视频文件的简单 iOS 项目,参考这个网站有用。我想为 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. 谢谢。

瓦迪安

当您的应用程序被沙盒化时,请确保在沙盒功能中启用了传出连接。

在此处输入图片说明

ATS 设置对 HTTPS 连接无效

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章