2011-04-28 67 views

回答

9

這是一個同步的例子。您可能想要異步執行此操作,但這會讓您完成快速檢查。

Reachability *netReach = [Reachability reachabilityWithHostName:@"host.name"]; 
//return [netReach currentReachabilityStatus]; 
NetworkStatus netStatus = [netReach currentReachabilityStatus]; 
if (netStatus==ReachableViaWiFi) { 
    [ViewManager showStatus:@"Reachable (WiFi)!"]; 
} else if(netStatus==ReachableViaWWAN) { 
    [ViewManager showStatus:@"Reachable (WWAN)!"]; 
} else { 
    [ViewManager showStatus:@"Not reachable, aww :-("]; 
} 

當使用reachabilityWithHostName你一定要記住,這僅僅是主機名,應該是沒有的http://前綴等。

+0

主機名只表示abc.com,我說得對嗎? – dks1725 2011-04-28 13:23:00

+0

是的,這是正確的。 – 2011-04-28 13:26:07

+0

好的,謝謝,我得到了 – dks1725 2011-04-28 13:28:08

0

爲了通過Apple(Reachability)代碼檢查服務器的可達性,您必須查看下面的實用方法;

+ (Reachability*) reachabilityWithHostName: (NSString*) hostName; 

但在我看來,我會首先檢查的其他因素組合的可達性(檢查互聯網連接3G/EDGE/WIFI和然後驗證所需的主機可達)相同的實例中。只是在我的場景中更新可達性方法內部的安全檢查之一。

else if (((netStatus == ReachableViaWiFi) || (netStatus == ReachableViaWWAN)) && connectionRequired == YES) 
{ 
     isInternetConAvailable = ([[NSURLConnection alloc] initWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:kReachibility_ping_uri] 
                  cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:20.0] delegate:self]) ? YES : NO; 
} 

在哪裏「kReachibility_ping_uri」是常量包含主機名,可達性類將張貼通知「kReachabilityChangedNotification」每當可達性變化iphone客戶端上你都執行所有同一時間可達性檢查並更新您的可達性狀態。

如果您需要示例,我如何在我的應用程序中使用,然後讓我知道我將提供代碼。

相關問題