- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个从我们的服务器下载文件(相当大的文件)的应用程序。我在前台和后台管理下载文件(不关闭应用程序)。我的问题是用户使用多任务屏幕故意关闭应用程序。
在这种情况下,我在 didCompleteWithError
方法上获得回调并接收到具有 error.userInfo
的错误,其中包含 下的恢复数据 NSData 对象>NSURLSessionDownloadTaskResumeData
键。
问题是:应该如何处理这种情况?我应该立即使用 didCompleteWithError
方法中的 downloadTaskWithResumeData 开始另一个任务,还是需要将 resumeData NSData 对象保存在 UserDefaults
中并在下次应用程序运行时使用它?
我试图在 didCompleteWithError
中做这样的事情:
if (error?.userInfo[NSURLSessionDownloadTaskResumeData] != nil) {
Logger.printLogToConsole(self.TAG, aMethodName: __FUNCTION__, aMessage: "Resume data was found");
let req = task.originalRequest
let languageCodeWrapped: AnyObject? = NSURLProtocol.propertyForKey("languageCode", inRequest:req!)!
if let languageCode = languageCodeWrapped {
SessionDownloader.sharedInstance.downLoadWithResumeData(languageCode as! String, aResumeData: error?.userInfo[NSURLSessionDownloadTaskResumeData] as! NSData)
if taskDelegate != nil {
DownloadSessionDelegate.sharedInstance.setDelegateForTaskId(taskDelegate, taskId: "\(task.taskIdentifier)", code: languageCode as! String)
}
}
}
但是有些东西工作不正常,我无法真正调试它,因为我需要终止应用程序,这基本上会终止调试的进程。
最佳答案
它不工作,因为应用程序已经被终止,只给你很短的时间(大约 5 秒)来保存你的东西。
要处理您的案例,请参阅 apple docs 中的以下注释
If an iOS app is terminated by the system and relaunched, the app can use the same identifier to create a new configuration object and session and retrieve the status of transfers that were in progress at the time of termination. This behavior applies only for normal termination of the app by the system. If the user terminates the app from the multitasking screen, the system cancels all of the session’s background transfers.
所以看起来你必须在你的情况下定义一些自定义的东西来处理你所说的 NUUser 默认值,但我建议使用 NSURLCache。
关于ios - 使用 NSURLSessionDownloadTask 时使用 resumeData 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32994644/
我在使用 NSURLSessionDownloadTask 处理 ios 上的“空间不足”/“磁盘已满”错误时遇到问题 如果由于应用程序中完成下载而导致磁盘已满,我会接到电话 URLSession(
我使用NSURLSessionDownloadTask从服务器下载文件,该文件在后台 session 中运行。我想保存恢复数据以在应用终止时恢复下载。但是,对cancelByProducingResu
我有一个主机应用程序,它有一个完美运行的后台下载 session ,但是通过今天的扩展启动下载我得到这个错误: The operation couldn’t be completed. (NSURLE
我是 NSURLSession 的新手,我没有在其他 stackoverflow 问题中找到答案。所以我发布这个。 我的 ViewController 中有一个 Button 和 ProgressBa
我有以下一段代码,它已经工作了几个月,并且刚刚开始间歇性地损坏。 我正在改变它被调用的方式,所以这并不完全不足为奇,但症状让我感到困惑。某些请求正在下载的临时文件似乎在读取数据之前被删除。 我有关于文
我正在使用 NSURLSessionDownloadTask 下载文件。在应用程序的某一时刻,有必要暂停下载一小段时间,然后再继续下载。我尝试使用暂停方法暂停下载,但任务继续下载。 NSURLSess
有人可以帮我把这个语句翻译成 Swift 吗? NSURLSessionDownloadTask *task = [session downloadTaskWithRequest:request
使用 NSURLSessionDownloadTask 连续下载文件列表的最佳做法是什么? 例如,是否最好在上一次下载完成后开始一个新的 NSURLSession? - (void)startDown
我需要按顺序下载文件。目前我可以在应用程序处于前台时执行此操作。 以下是我使用的逻辑。 创建所有下载任务。 一次恢复一个,当前完成后从 URLSession:task:didCompleteWithE
我正在使用 nsurlsession 来管理下载图像/视频文件。问题是有时请求会出错并返回“找不到内容”之类的文本。我如何确保正在下载的文件确实是我请求的文件类型? (例如 .jpeg 或 .mp4)
我添加“下载任务”并终止应用进程。 运行app后,获取[manager downloadTasks];并恢复所有。但文件未加载到 Documets 目录中。 我使用 AFNetworking 2.0
这就是我使用 NSURLSessionDownloadTask 的方式: let sessionConfiguration = NSURLSessionConfiguration.defaul
我的 iOS 应用程序使用 NSURLSessionConfiguration、NSURLSession、NSURLSessionDownloadTask 等来下载我们的服务器从数据库中动态生成的 x
我想知道我是否可以检索失败的 NSURLSessionDownloadTask 的部分下载数据。 我的用例是: 我开始下载一个 1024MB 的文件 已下载 512MB 网络中断下载失败 下载失败时,
我需要使用桌面应用程序下载文件。首先,我创建了一个简单的iOS项目,用于下载视频文件,引用这个web site 。有用。我想为 macOS 做几乎同样的事情。 class ViewController
我正在使用 NSURLSessionDownloadTask 下载网页文件。当我使用 [NSURLSessionConfiguration backgroundSessionConfiguration
我正在尝试使用 NSURLSessionDownloadTask 下载一个大文件。但是,我只想下载该文件的前 10MB。我知道如何在下载 10MB 后取消操作,但如何强制调用 didFinishDow
在我的应用程序中,我从 Web 服务获取 JSON。此 JSON 包含我要下载的几个文件的网址。 我想使用 NSURLSessionDownloadTask 一个一个地下载每个文件(等待第一个下载完成
我需要从服务器下载一些图片和一段视频: NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSes
在我的应用程序中,我目前正在使用 NSURLSessionDownloadTask通过 HTTP 获取文件。 此类提供了一个有用的委托(delegate)接口(interface)来监控其进度并在通过
我是一名优秀的程序员,十分优秀!