眾所周知,我們在開發APP時,涉及網絡連接的時候,都會想著提前判斷一下當前的網絡連接狀態,如果沒有網絡,就不再請求url,省去不必要的步驟,所以,這個如何判斷?其實很簡單。
前提:工程添加:SystemConfiguration.frameworkframework
然后在需要判斷的類中包含頭文件:
[cpp]view plaincopy
#import?"Reachability.h"
【如果你使用的ASIHTTPRequest類庫,那么直接import Reachbility.h就可以了,ASIHTTP類庫里包含Reachbility.h和.m】
下面是我寫的一個方法:
[cpp]view plaincopy
-(BOOL)?isConnectionAvailable{
BOOLisExistenceNetwork?=?YES;
Reachability?*reach?=?[Reachability?reachabilityWithHostName:@"www.apple.com"];
switch([reach?currentReachabilityStatus])?{
caseNotReachable:
isExistenceNetwork?=?NO;
//NSLog(@"notReachable");
break;
caseReachableViaWiFi:
isExistenceNetwork?=?YES;
//NSLog(@"WIFI");
break;
caseReachableViaWWAN:
isExistenceNetwork?=?YES;
//NSLog(@"3G");
break;
}
if(!isExistenceNetwork)?{
MBProgressHUD?*hud?=?[MBProgressHUD?showHUDAddedTo:self.view?animated:YES];//MBProgressHUD為第三方庫,不需要可以省略或使用AlertView
hud.removeFromSuperViewOnHide?=YES;
hud.mode?=?MBProgressHUDModeText;
hud.labelText?=?NSLocalizedString(INFO_NetNoReachable,?nil);
hud.minSize?=?CGSizeMake(132.f,?108.0f);
[hud?hide:YES?afterDelay:3];
returnNO;
}
returnisExistenceNetwork;
}
然后在需要判斷的地方直接:[self isConnectionAvailable] ,大家看懂了吧,就這么簡單。
所以舉一反三,如果你不單單是判斷是否網絡通暢,而是要判斷是WIFI或3G,再寫一個isEnableWIFI的方法,具體判斷方法就不用再贅述了吧,currentReachabilityStatus判斷之。