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 监听超时的主要内容,如果未能解决你的问题,请参考以下文章