我們在開發APP涉及網絡連接的時候,提前判斷一下當前的網絡連接狀態,如果沒有網絡,就不再請求url,省去不必要的步驟,所以,這個如何判斷?其實很簡單。
前提:工程添加:SystemConfiguration.framework framework
然後在需要判斷的類中包含頭文件:
- #import "Reachability.h"
【如果你使用的ASIHTTPRequest類庫,那麼直接import Reachbility.h就可以了,ASIHTTP類庫裏包含Reachbility.h和.m】
下面是我寫的一個方法:
- -(BOOL) isConnectionAvailable{
- BOOL isExistenceNetwork = YES;
- Reachability *reach = [Reachability reachabilityWithHostName:@"www.apple.com"];
- switch ([reach currentReachabilityStatus]) {
- case NotReachable:
- isExistenceNetwork = NO;
- //NSLog(@"notReachable");
- break;
- case ReachableViaWiFi:
- isExistenceNetwork = YES;
- //NSLog(@"WIFI");
- break;
- case ReachableViaWWAN:
- isExistenceNetwork = YES;
- //NSLog(@"3G");
- break;
- }
- if (!isExistenceNetwork) {
- MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];//<span style="font-family: Arial, Helvetica, sans-serif;">MBProgressHUD爲第三方庫,不需要可以省略或使用AlertView</span>
- hud.removeFromSuperViewOnHide =YES;
- hud.mode = MBProgressHUDModeText;
- hud.labelText = NSLocalizedString(INFO_NetNoReachable, nil);
- hud.minSize = CGSizeMake(132.f, 108.0f);
- [hud hide:YES afterDelay:3];
- return NO;
- }
- return isExistenceNetwork;
- }
所以舉一反三,如果你不單單是判斷是否網絡通暢,而是要判斷是WIFI或3G,再寫一個isEnableWIFI的方法,具體判斷方法就不用再贅述了吧,currentReachabilityStatus判斷之。
是不是很方便?項目更合理了呢?