2014-10-04 110 views
1

想要檢查是互聯網可用或不可用前調用任何網絡服務器在撥打網絡服務互聯網之前檢查打開或關閉

我用蘋果提供的Reachiablity來檢查網絡是否開啓。 我將這兩個文件添加到我的項目中。 Reachability.h和Reachability.m

在ViewController.h

-(BOOL)connected; 

和ViewController.m其實現。

-(BOOL)connected{ 
     Reachability *reachability = [Reachability reachabilityForInternetConnection]; 
     NetworkStatus networkStatus = [reachability currentReachabilityStatus]; 
     return networkStatus != NotReachable; 
    } 

之前調用Web服務器製造condtion

if([self connection] == true){ 

// Do call web server. 
} 

else { 
// Alert message print. // Please check internet connection. 
} 

WIFI運行在這兩種情況下,應用程序打開或關閉與MACBOOKPRO「模擬器」或設備。它總是返回真實的狀態。

請讓我知道,我應該做什麼才能正確地做出可行性工作。

我使用的是Xcode 6.0.1 IOS SDK 8.0。

@ALL 提前致謝。

+1

請選中該鏈接http://stackoverflow.com/questions/8812459 /最簡單的方式來檢測互聯網連接上的IOS – NANNAV 2014-10-04 08:12:13

+0

其工作設備不適用於模擬器。 IOS 8.0.1中修正的IOS 8.0問題的可達性存在小問題 – KkMIW 2014-10-04 09:34:22

回答

1

爲什麼要麻煩?如果沒有網絡連接,你會從你的嘗試中得到一個完美的錯誤。可達性對於瞭解連接何時返回以及是否有網絡作業排隊很有用,但在每次網絡調用之前檢查無效。

無論如何,您需要錯誤處理代碼,因爲缺少的連接只是請求可能返回錯誤的幾個原因之一。在這種情況下,可達性是增加額外的代碼沒有好處,這是我見過的大多數用途。

+0

是的你是對的。但是如果沒有網絡連接,我會收到很好的錯誤。在這裏,不必要的是我打電話給服務器,我覺得這不是一個有效的。 - (void)連接:(NSURLConnection *)連接didFailWithError:(NSError *)錯誤{@@「錯誤消息%@」,錯誤); ] } – KkMIW 2014-10-04 07:22:27

+0

您認爲可達性如何獲取其信息?關於可達性的 – jrturton 2014-10-04 07:28:07

+0

獲取其信息。它唯一的網絡狀態是打開或關閉。與請求服務器數據無關。 – KkMIW 2014-10-04 07:36:26

0

如果您使用AFNetworking庫,那麼它會內部檢查網絡連接並提供正確的網絡錯誤警報。 REF:​​

0

我在iOS 8上做了一個測試,上面的代碼在設備上工作。但是在模擬器上,無論是打開還是關閉,總是返回true。在將可達性改爲:

Reachability *reachability = [Reachability reachabilityWithHostName:@"www.google.com"]; 

它在模擬器上工作。

原代碼適用於模擬器的iOS 7,因此可能爲iOS 8

+0

我在這裏有一個小問題。無需撥打www.google.com reachabilityWithHostName即可獲取網絡狀態。開或關 – KkMIW 2014-10-04 07:40:01

+0

我不這麼認爲。也許將來你可以。 – gabbler 2014-10-04 07:51:47

0

試試下面的代碼中的錯誤:

if (![self connected]) { 

    // Alert message print. // Please check internet connection. 
} else { 
    // Do call web server. 
} 
相關問題