2016-04-21 63 views
0

我們使用NSURLSession在後臺下載數據,並定義了timeoutIntervalForResource,以便在超時時會超時,但如果由於某種原因源服務器不運行那麼它仍然坐着等待。有沒有辦法讓它立即中止,或者如果有什麼東西被下載了,請問NSURLSessionDownloadTask?如果服務器不存在,則NSURLSession會等待超時

如果沒有,那麼在嘗試從服務器下載數據之前執行預檢以確保服務器存在的最佳方法是什麼?

這些服務器可能超出了我們的控制範圍,因此我們無法放置一個小文件來下載以檢查可用性。例如,我們可能無法提供的唯一文件可能是大型視頻。

回答

1

你確實可以向任務詢問其狀態。首先檢查響應屬性。如果這是零,那麼你沒有從服務器獲得第一個數據包。如果不是零,則根據需要使用countOfBytesExpectedToReceivecountOfBytesReceived以確定進度。

我還應該注意到,這些屬性都支持KVO,AFAIK。

如果您願意,也可以在調度後臺請求之前執行顯式DNS查找,但這樣做的警告會阻止您安排可能實際工作的事情,如果用戶的Internet連接恢復聯機與此同時。 :-)

相關問題