iOS NSURLSession 监听超时

Posted

技术标签:

【中文标题】iOS NSURLSession 监听超时【英文标题】:iOS NSURLSession Listen to Timeout 【发布时间】:2015-06-24 02:25:35 【问题描述】:

我创建了一个简单的 NSURLSessionDownloadTask 来从 URL 下载,它的类具有 NSURLSession 委托:

@interface DownloadManager : NSObject <NSURLSessionDataDelegate, NSURLSessionDelegate, NSURLSessionDownloadDelegate, NSURLSessionTaskDelegate>

//...

NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
[sessionConfiguration setTimeoutIntervalForRequest:30.0];
[sessionConfiguration setTimeoutIntervalForResource:60.0];

NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfiguration];
NSURLSessionDownloadTask *downloadTask = [session downloadTaskWithURL:self.url];

[downloadTask resume];

但是,我找不到侦听下载任务超时的协议方法。有没有办法监听超时(例如 - 我想在 30.0 秒过去但仍未收到数据时关闭进度对话框)

我已经搜索了谷歌,但到目前为止还没有找到任何信息,所以我会在搜索更多信息时将这个问题留在这里。

非常感谢!

【问题讨论】:

【参考方案1】:

超时是 NSURLSession 在 completionHandler 块中给你的错误之一。我是NSURLErrorTimedOut = -1001

在委托方法中

- URLSession:task:didCompleteWithError:

检查 NSError 是否是 NSURLErrorTimedOut 做你想做的事

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Constants/#//apple_ref/doc/constant_group/URL_Loading_System_Error_Codes

【讨论】:

以上是关于iOS NSURLSession 监听超时的主要内容,如果未能解决你的问题,请参考以下文章

可以使用不同的配置多次创建 NSURLSession 对象吗?

iOS 使用NSURLSession下载大文件

NSURLSession 超时

NSURLSession - 请求超时

异步图像下载可以超时还是我需要 NSURLSession?

NSURLSession : 设置请求超时 > 75 秒 [服务器无法访问]