2016-02-12 65 views
5

我正在構建我的API調用的錯誤情況,並希望檢查互聯網連接不可用時的情況。可達性與NSURLSession響應檢測互聯網連接

dataTaskWithRequest似乎處理這很好,並返回NSError與代碼-1009與描述沒有互聯網連接。我不必等待請求超時。

在哪些情況下我想使用可達框架? 謝謝

+0

yamski @做我的回答幫你或者需要更多的幫助 –

+0

@RohitKP,對不起,它並沒有幫助,反而導致我在正確的解決方案。 – yamski

回答

12

我做了一些研究,並在Apple Docs中找到了我的答案。

建議的最佳做法是嘗試連接。如果連接存在問題,它會爲您提供一個NSError對象,您應該使用它來測試連接。

Apple建議僅​​將Reachability用作診斷錯誤並進一步調試已知問題的一種方法。您似乎應該只使用可達性來檢測網絡在故障後重新聯機。

「總是試圖建立連接。不要試圖猜測網絡服務是否可用,不緩存該確定。

如果連接失敗,請使用SCNetworkReachability API,以幫助診斷的原因失敗。」

來源: https://developer.apple.com/library/ios/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/WhyNetworkingIsHard/WhyNetworkingIsHard.html#//apple_ref/doc/uid/TP40010220-CH13-SW3

「當所有任務完成後,NSURLSession對象調用委託的URLSession:task:didCompleteWithError:方法有兩種錯誤的對象或零(如果任務成功完成)

如果任務失敗。大多數應用程序應該重試請求,直到用戶取消下載或服務器返回一個錯誤,指示請求永遠不會成功。然而,您的應用程序不應該立即重試,而應該使用可達性API來確定服務器是否可到達,並且只有在收到通知時才應提出新的請求可達性發生了變化。「

來源:

https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/URLLoadingSystem/NSURLSessionConcepts/NSURLSessionConcepts.html