- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个类来使用 URLSession
下载文件。
我注意到一个奇怪的行为,当设备处于 Debug模式时,它正在下载文件。但是,如果我删除设备并手动运行应用程序,则下载根本无法进行。有时重新连接设备会开始下载。
这就是我创建 URLSession 的方式:
private lazy var urlSession: URLSession = {
let config = URLSessionConfiguration.background(withIdentifier: "org.company.id")
config.isDiscretionary = true
config.sessionSendsLaunchEvents = true
config.allowsCellularAccess = true
return URLSession(configuration: config, delegate: self, delegateQueue: nil)
}()
这是我的请求下载功能:
func requestDownload(urlString: String){
guard let url = URL(string: urlString) else {return}
downloadTask = urlSession.downloadTask(with: url)
downloadTask.taskDescription = urlString
downloadTask.resume()
}
这是该文件下载器类的链接:https://github.com/skdevil/PrakrstaFileDownloader
知道如何解决吗?
最佳答案
问题是,当您将它附加到调试器运行时,应用程序永远不会挂起,而在设备上则可以。
一些观察:
您可能还没有实现 handleEventsForBackgroundURLSession
在您的应用委托(delegate)或 urlSessionDidFinishEvents(forBackgroundURLSession:)
在您的 URLSessionDelegate
中。它们是后台下载所必需的。我们需要查看这些实现以进一步发表评论。
有关详细信息,请参阅 Downloading Files in the Background .
仅供引用,我已经发布了 pull request在那个 repo 上,显示你需要做什么来支持后台 session 。
或者,如果您已正确完成所有这些操作,请注意您已经设置了自主模式。这意味着它将在连接到电源和 wifi 时下载。是这样吗?
请注意,我鼓励您进行一些日志记录,以便您了解发生了什么。但是您不能为此使用 Xcode 的调试机制(因为,正如您所注意到的,附加到 Xcode 会改变应用程序的行为)。
您可以改为使用 WWDC 2016 视频中概述的“统一日志记录”进行记录 Unified Logging and Activity Tracing .这样,您就可以在 macOS 控制台上查看来自 iOS 设备的日志消息,而不必编写自己的文件日志记录系统。请参见 https://stackoverflow.com/a/25951564/1271826 中的第 3 点例如,如何在 macOS 控制台上观察 iOS 日志消息。或者观看前面提到的 WWDC 视频。
关于ios - URLSessionDownloadTask 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49707439/
我创建了一个类来使用 URLSession 下载文件。 我注意到一个奇怪的行为,当设备处于 Debug模式时,它正在下载文件。但是,如果我删除设备并手动运行应用程序,则下载根本无法进行。有时重新连接设
目前我正在努力从服务器下载一个文件,而且效果很好。 我的问题是在实际下载开始之前我怎么知道 url 是否具有恢复能力? 下面是一些代码片段, class Downloader:NSObject,URL
NSURLSessionDownloadDelegate协议(protocol)中有3个方法。 URLSession:downloadTask:didFinishDownloadingToURL:,
当我尝试从 url 下载文件时,文件会被下载并存储在文件夹中。但是当我尝试打开该文件时。该文件似乎已损坏,我无法打开该 pdf 文件。 我已经使用下面提到的代码尝试了所有可能性。但它们都不起作用。任何
当应用程序处于关闭状态或我的下载状态发生变化时,例如从等待状态到下载状态或完成状态,我想在核心数据中保存 URLSessionDownloadTask。 我的自定义类的所有其他属性都完美存储,但应用程
试图理解为什么在 WatchKit 3.0 中安排后台 URLSessionDownloadTask 时。函数 handle(_ backgroundTasks: Set)从不触发 WKURLSess
我是一名优秀的程序员,十分优秀!