问题标签 [nsurlsessiondownloadtask]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
21697 浏览

ios - 如何处理完成处理程序块中取消的 NSURLSessionTask ?

如果我创建一个NSURLSessionDownloadTask,然后在它完成之前取消它,完成块似乎仍然会触发。

如何检查此块内的下载任务是否被取消,以便在没有下载任务时不会尝试对生成的下载进行操作?

0 投票
1 回答
350 浏览

ios - NSURLSession & NSURLSessionConfig - 丢弃配置头

我遇到了NSURLSession&的问题,NSURLSessionConfiguration我不确定这是我的代码还是我对框架的行为方式有不正确的理解。

我面临的问题是我在会话级别设置的标头在NSURLSessionTask从会话创建的中不存在。

这是一个小例子:

上面的代码输出:

根据我对文档的理解,从会话创建的任何任务或请求都应该包含会话中的 HTTPHeaders。我的理解正确吗?如果是这样,谁能看到我做错了什么?

0 投票
1 回答
1216 浏览

objective-c - URLSession 下载任务委托仅在所有任务完成后调用

我有NSURLSession一个后台配置同时下载两个或三个文件。除了委托方法之外,一切似乎都运行良好

仅在所有下载任务完成时调用,而不是在每个下载任务完成时单独调用。其他用于单独更新下载进度功能的委托方法。

当我设置为时,问题也不会发生NSURLSessionConfigurationdefaultConfiguration但是后台下载显然不起作用。我错过了什么吗?我应该NSURLSessions为每个下载任务分开吗?

编辑:根据要求,这里是创建会话和配置的代码。我已经包含了默认配置和后台会话配置,尽管在创建中只使用了一个。

用于开始任何下载,[_backgroundURLSession downloadTaskWithURL:[NSURL URLWithString:_url]]用于创建一个NSURLSessionDownloadTask,下载任务存储在NSMutableDictionary以 URL 为键的 a 中。当任务完成时,下载任务将从委托方法中的字典中删除。字典主要用于跟踪进度和取消任务。

0 投票
1 回答
5710 浏览

ios - Using NSURLSessionDownloadTask to display an image

I was wondering if someone could help me out. I'm trying to use NSURLSessionDownloadTask to display a picture in my UIImageView if I put the image URL into my textfield.

I am not sure where to go after this.

0 投票
1 回答
481 浏览

ios - 如何从resumeData的NSURLSessionResumeCurrentRequest中为HTTPHeaderField添加值?

我有一个来自 cancelByProducingResumeData 的 resumeData 的字典:如下所示,我想知道如何使用 NSURLSessionResumeCurrentRequest 为 HTTPHeaderField 添加Value。

我想知道如何将 NSURLSessionResumeCurrentRequest 的 NSData 转换为 NSURLRequest。

2014-11-11 13:11:30.545 xxxxXXXXX[77997:14163248] resumeInfo => { NSURLSessionDownloadURL = " http://xxx.xxx.xxx/webdav/content/admin/201407/ttp.mp4NSURLSessionResumeEntityTag = 41220469dd0d761e33125751d386d9b1; NSURLSessionResumeInfoLocalPath = "/Users/Library/Developer/CoreSimulator/Devices/0F13C2EC-4B9C-4FB4-AD78-7A309C4C65F2/data/Containers/Data/Application/28925A91-9DDE-4041-A1F5-A35387E9115E/tmp/CFNetworkDownload_NKJuq1.tmp"; NSURLSessionResumeInfoVersion = 1; NSURLSessionResumeOriginalRequest = < 24636c61 73736e61 6d655824 636c6173 73657355 4e535552 4ca24041 554e5355 524c584e 534f626a 65637423 404e0000 00000000 10000923 00000000 00000000 23000000 00000000 0013ffff ffffffff ffffd23c 3d494a5c 4e535552 4c526571 75657374 a24b4c5c 4e535552 4c526571 75657374 584e534f 626a6563 745f100f 4e534b65 79656441 72636869 766572d1 4f505472 6f6f7480 01000800 11001a00 23002d00 32003700 45004b00 78007c00 7f008300 86008a00 91009400 98009b00 9f00a200 a600aa00 ad00b000 b400b700 bb00be00 c200c500 c700c900 cb00cd00 cf00d100 d300d500 d700d900 db00dd00 df00e100 e300e500 e700e900 eb00ed00 ef00f000 f700ff01 0b010d01 0f011101 76017b01 86018f01 95019801 9e01a701 b001b201 b301bc01 c501ce01 d301e001 e301f001 f9020b02 0e021300 00000000 00020100 00000000 00005100 00000000 00000000 00000000 000215>; NSURLSessionResumeServerDownloadDate = "2014 年 7 月 25 日星期五 04:36:

0 投票
1 回答
1293 浏览

ios - 使用 NSURLSessionDownloadTask 从重定向 URL 下载 pdf 文件

我正在制作一个用户登录网站并下载一些pdf文件的应用程序。

我能够使用 URLSession 成功登录该站点。

现在我的问题是文件的下载。

该网站使用带有以下“ http://www.someurl.com/getfile.asp?FILE=12345 ”的网址,这显然是重定向到嵌入在获取网址中的实际pdf文件,

尝试将 NSURLSessionDownloadTask 与 url 一起使用,但无法下载 pdf 文件。

有关如何从响应中获取实际 URL 并下载文件的任何帮助?

我在这里尝试过:注意我更改了网址只是为了提出问题

当我记录这个时,我得到 null NSLog(@"%@",appDir);

0 投票
1 回答
3020 浏览

ios - 在iOS后台下载大量文件

我有一个应用程序,我必须在其中下载大量文件,从 400 到 900 个文件,总共大约 1GB。

实现这一目标的最佳方法是什么?

  1. 一项NSURLSession和所有任务都排在其中?
  2. 一个NSURLSession并按包排列任务(例如 10 x 10)?
  3. 多个NSURLSession不同的队列?

实际上,我有一个NSURLSession在所有任务中(每个文件一个)排队,但有时我得到一个Lost connection to background transfer service.

这是我的代码:

0 投票
0 回答
2106 浏览

ios - NSURLSession 在 iOS 8 中可以通过蜂窝进行后台下载吗?

当我的应用程序在后台并被重大位置更改唤醒时,我需要启动小下载。但是苹果的 NSURLSessionConfiguration 文档在这里:

https://developer.apple.com/library/IOs/documentation/Foundation/Reference/NSURLSessionConfiguration_class/index.html#//apple_ref/occ/instp/NSURLSessionConfiguration/discretionary

对可自由支配的财产说以下:

传输大量数据时,建议您将此属性的值设置为 YES。这样做可以让系统在更适合设备的时间安排这些传输。例如,系统可能会延迟传输大文件,直到设备插入并通过 Wi-Fi 连接到网络。此属性的默认值为 NO。

session 对象仅将此属性的值应用于应用程序在前台启动时的传输。对于在您的应用程序处于后台时启动的传输,系统总是自行决定启动传输- 换句话说,系统假定此属性为 YES 并忽略您指定的任何值。

这似乎意味着如果在后台开始下载,操作系统总是可以自行决定是否以及何时继续下载。在完成这些任务之前,操作系统似乎总是在等待 wifi 连接。我的经验支持这个猜想。我发现当设备使用蜂窝网络时,我可以发送多个下载通知。他们仍然卡住。当我将设备切换到 wifi 时,它们都通过了。

怎么回事?为什么 Apple 禁止配置此行为,特别是因为它们在 NSURLSessionConfiguration 对象上具有必要的属性(自由裁量权,allowCellularAccess)。当然,当下载任务开始时,用户并不总是在 WiFi 中。我需要这样做以响应重大位置变化引起的应用程序唤醒。我在后台会话中安排下载任务,并且在切换到 WiFi 之前从未在蜂窝网络上收到委托回调。那么这是否意味着我无法完成这些任务,直到 WiFi 再次可用或我将应用程序带回前台?

你们中有人有解决方法吗?

我已经想到了以下几点:

在位置更新后启动长时间运行的后台任务(旧样式)并使用 defaultSessionConfiguration 在那里下载我的东西。如果可以的话,有什么经验吗?如果不是这样,我认为我会使用 NSURLConnection (甚至更老的风格)。

0 投票
1 回答
308 浏览

ios - iOS - 以固定间隔自动更新数据的后台传输服务

我正在开发一个提要应用程序,它从服务器获取提要并显示给用户阅读。当应用程序启动时它工作正常,但我想在暂停或终止时在后台加载数据(在这两种情况下)。由于我们可以在 android 中创建 IntentService 并使用 AlarmManager,我们可以在每隔固定时间(例如 3 小时)后启动该服务,因此每当用户上网时,他将能够看到最新数据而无需等待获取新的提要。

我已阅读后台传输服务和NSURLSession静默远程通知,但我不明白这将如何帮助我实现目标。

收到远程通知时,我如何恢复NSURLSessionDataTask表单AppDelegate.m文件,因为我们不能在那里使用委托。

请帮我解决这个问题。从过去 2 天开始进行谷歌搜索,但没有成功实现这一目标。

0 投票
1 回答
777 浏览

ios - 使用 NSURLSessionDownloadTask 时如何提高速度?

我需要从服务器下载一些图像和视频:

我发现它太慢了!速度约为 200K/s,使用 Android 的时间比 iPhone 少 2/3。当我下载大约 4.6M 的 mp4 时,需要 15 秒。

但是当我使用其他应用程序下载电影时,它可以是 2M/s。当我使用 afnetworking 时我错了吗?它是如何发生的,我能做些什么来处理它。另一个问题是我知道用 if (i == _collectionArr.count - 1){[SVProgressHUD showSuccessWithStatus:@"Done"];}监视最后一个请求是错误的, 但我不知道正确的答案。

谢谢你的帮助。