下载许多文件时AFNetworking / NSURLSession超时

时间:2016-05-19 09:26:55

标签: ios afnetworking nsurlsession nsurlsessiondownloadtask

在我的应用中,用户可以一次下载多个文件。这些文件大约每个2MB。 由于用户可以根据需要一次选择多个文件,因此我将library(data.table) setDT(df1)[, rn := 1:.N] dcast(melt(df1, id.var= "rn"), rn ~variable, value.var="value", sum)[, rn:= NULL][] # B C U #1: 2 2 1 #2: 4 4 2 #3: 6 6 3 #4: 8 8 4 设置为仅允许2个并发操作。 以下是我设置会话管理器的方法:

operationQueue

现在下载开始了。但是如果所有文件的下载时间超过我指定的超时时间,则所有其他NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; configuration.timeoutIntervalForRequest = 60; AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration]; [manager.operationQueue setMaxConcurrentOperationCount:2]; self.urlSessionManager = manager; (以及那些甚至没有启动的人)都会失败。所以似乎超时星计数第二个我创建downloadTask而不是当他们真正开始提出请求时?

由于我有一个队列,我预计超时会在下载任务变为下载后立即开始计算?!

为了能够真正让用户一次下载所有这些文件,我需要更改什么?

1 个答案:

答案 0 :(得分:1)

基本上,如果请求永远不会启动(因此从不请求任何数据),那么传入的数据将不会重置该计时器,这意味着任务在60秒后被取消。这种行为有点不明显,可能值得提一下。

您可以通过创建自己的URL协议来解决此问题,该协议在会话中重新发出请求,没有超时和没有连接限制(以便您的代码知道请求何时实际启动),然后自己管理超时。