2012-04-06 49 views
0

在我的應用程序中,如果用戶沒有互聯網連接,我需要顯示「無互聯網連接」消息。iPhone:如何在沒有主機的情況下使用可達性?

要使用可達這樣的:

Reachability *netReach = [Reachability reachabilityWithHostName:@"host.name"]; 

是壞主意,因爲互聯網可能是可用,但主機是不是,對不對?

那麼如何檢查沒有主機的互聯網連接?謝謝...

+0

通過復讀來http://stackoverflow.com/questions/6062835/更新-iPhone可達性 - 網絡變化 - 因爲它是一個更好的機制,在網絡不存在的情況下做出反應。即當應用程序通過發出網絡請求嘗試創建網絡功能時,您應該只顯示「無網絡連接」,然後檢查可達性結果,而不是一開始就依賴可達性。 – Petesh 2012-04-06 09:38:32

回答

0

你是對的。可達性僅檢查某個主機是否可達。問題是,如果沒有向主機發送請求,就無法(我能想到)如何確定您是否連接到互聯網。

那麼你可以做什麼(以及蘋果在其可達性示例中做了什麼):選擇一個主機,你可以99.99%確定主機可用。例如google.com或apple.com

我認爲,蘋果是依靠某個主機來檢查互聯網連接(事實上,他們還沒有拿出別的東西,沒有依賴性在某個主機上)是一個非常好的信號,以這種方式檢查互聯網連接並不是一個壞主意。

編輯

課程(在這個問題的答案Petesh所指向的問題描述)的最佳方法是簡單地讓你想,如果他們發生然後相應地處理錯誤的請求。換句話說:1.您的要求。如果它不能使用可達性,看是否缺少互聯網連接可能是問題

+0

我聽說蘋果可以拒絕該應用程序,如果它可以顯示消息「沒有互聯網連接」,如果互聯網可用..類似的東西...試圖找到.. – Jim 2012-04-06 09:52:07

+0

它認爲你應該沒事,如果你嘗試首先向服務器發出請求,並且僅在服務器未響應時檢查是否可以連接到其他主機才使用Reachability。但這只是我個人的看法。 – joern 2012-04-06 10:03:39

1
Reachability *internetReachable = [Reachability reachabilityForInternetConnection]; 
[internetReachable startNotifier]; 
if(internetReachable.isReachable) 
    NSLog(@"True"); 
相關問題