【问题标题】:iOS NSURLSession Listen to TimeoutiOS NSURLSession 监听超时
【发布时间】: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 秒过去但仍未收到数据时关闭进度对话框)

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

非常感谢!

【问题讨论】:

    标签: ios delegates timeout nsurlsessiondownloadtask


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2020-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-07
      • 2018-06-12
      • 2011-06-02
      • 2020-06-24
      相关资源
      最近更新 更多