這裏有大量關於在應用程序中找到活動的互聯網連接的問題,但如果您在3g連接並且沒有數據信用,或者如果您是在酒店的WiFi網絡上自動重定向到登錄頁面,但您尚未輸入密碼。那種情況。檢查iOS設備的互聯網連接是否正常工作
什麼是檢查互聯網連接是否實際運行的最快方法?
這裏有大量關於在應用程序中找到活動的互聯網連接的問題,但如果您在3g連接並且沒有數據信用,或者如果您是在酒店的WiFi網絡上自動重定向到登錄頁面,但您尚未輸入密碼。那種情況。檢查iOS設備的互聯網連接是否正常工作
什麼是檢查互聯網連接是否實際運行的最快方法?
完成此操作的最佳方式是不使用Reachability
或任何其他API,方法是創建一個NSURL
並嘗試從中接收數據。對於不好的連接,我添加了一個超時 20秒。
像:
- (void)checkConnection //Run this on a side queue, never on a main queue
{ NSURL *checkURL = [NSURL URLWithString:@"http://www.apple.com"];
NSURLRequest *lRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:checkURL]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:20.0];
NSData *data = [NSData dataWithContentsOfURL:lRequest];
if (data)
{
connected = YES;
}
else
{
connected = NO;
}
}
這將檢查是否有特定的網站訪問,並設置超時,這表明網絡連接速度慢。
此代碼可能有錯誤,因爲我還沒有使用/嘗試過它!如果有任何評論,請回答此問題。
爲什麼可達性不是最好的方式?你應該用一些深刻的證據支持這個評論。 'apple.com'不再有有效的服務器/主機時會發生什麼。有兩個星期等待更新被批准 – soulshined
@soulshined我並不是說這是最好的方法。如果你不使用任何API,這可能是最好的方法。此外,Apple.com的正常運行時間高達97%。我建議使用Google.com,因爲它們幾乎可以隨時獲得99.9%的正常運行時間。 – MasterRazer
問題是,當可達性觸手可及時,您不應該像這樣硬編碼地址。即使您不使用Apple.com,地址也會發生變化,服務器故障等等,也許說'最簡單的方法'更準確,但這個解決方案並不是最好的。可達性還包含在網絡更改時更新委託的通知,而不是手動查看網絡是否更改 – soulshined
可以在AFNetworking使用AFNetworkReachabilityManager類。
https://github.com/AFNetworking/AFNetworking
上面的鏈接會幫助你在設置的東西。這將根據您的要求爲您提供連續的網絡檢查。這裏有幾行代碼:
[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
NSLog(@"Reachability: %@", AFStringFromNetworkReachabilityStatus(status));
}];
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
@danpeters嗨,你可以實現它使用可達性類到iOS。 –
Apple Reachability代碼僅檢查是否存在WiFi/3G連接或根本沒有連接,而不是上述情況。 –
@Danpeters也可以使用Reachability類。也可以使用SCNetworkReachability類。 –