众所周知,我们在开发APP时,涉及网络连接的时候,都会想着提前判断一下当前的网络连接状态,如果没有网络,就不再请求url,省去不必要的步骤,所以,这个如何判断?其实很简单。
1、工程添加:SystemConfiguration.framework类库;
2、然后在需要判断的类中包含头文件:
#import "Reachability.h"
【如果你使用的ASIHTTPRequest类库,那么直接 #import "Reachability.h" 就可以了,ASIHTTP类库里包含Reachbility.h和.m】
3、下面判断实现网络是否连接方法:
-(BOOL) isConnectionAvailable{
BOOL isExistenceNetwork = YES;
Reachability *reach = [Reachability reachabilityWithHostName:@"www.baidu.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) {
UIAlertView *alter = [[UIAlertView alloc]initWithTitle:nil message:@"当前网络不可用,请检测网络状态" delegate:self cancelButtonTitle:nil otherButtonTitles: nil];
[alter show];
return NO;
}
return isExistenceNetwork;
}
然后在需要判断的地方直接调用类方法即可:[self isConnectionAvailable] ,大家看懂了吧,就这么简单。
所以举一反三,如果你不单单是判断是否网络通畅,而是要判断是WIFI或3G,再写一个isEnableWIFI的方法,具体判断方法就不用再赘述了吧,currentReachabilityStatus判断之。
注意:使用 ASIHttpRequst时需要导入的类库:
SystemConfiguration.framework,MobileCoreServices.framework,CoreGraphics.framework,libz.1.2.3.dylib 四个类库