iOS NSURLSession Прослушивание тайм-аута

Я создал простую задачу 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 секунд, а данные все еще не получены)

Я уже прошерстил Google, но пока не нашел никакой информации, поэтому оставлю этот вопрос здесь, пока буду искать дополнительную информацию.

Спасибо большое!


person Jack Sparser    schedule 24.06.2015    source источник


Ответы (1)


Тайм-аут — это одна из ошибок, которую NSURLSession выдаст вам в блоке завершенияHandler. Это 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

person dopcn    schedule 24.06.2015