方法一:利用系统状态栏判断网络状态
// 状态栏是由当前app控制的,首先获取当前appUIApplication *app= [UIApplication sharedApplication];
NSArray *children = [[[appvalueForKeyPath:@"statusBar"] valueForKeyPath:@"foregroundView"] subviews];
inttype= 0;for(id childinchildren) {if([child isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")])
{type= [[child valueForKeyPath:@"dataNetworkType"] intValue]; }}switch (type) { case 1:return@"2G";break; case 2:return@"3G"; case 3:return@"4G"; case 5:return@"WIFI"; default:return@“NO-WIFI";//代表未知网络break;}
当然,此方法存在一定的局限性,比如当状态栏被隐藏的时候,无法使用此方法。
方法二:使用第三方库AFNetWorking判断(使用前记得导入 #import "AFNetworking.h")
[[AFNetworkReachabilityManager sharedManager] startMonitoring];[[AFNetworkReachabilityManager sharedManager ] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {switch(status) {case-1:NSLog(@"未知网络");break;case0:NSLog(@"网络不可达");break;case1:NSLog(@"GPRS网络");break;case2:NSLog(@"wifi网络");break;default:break; }if(status ==AFNetworkReachabilityStatusReachableViaWWAN || status == AFNetworkReachabilityStatusReachableViaWiFi) {NSLog(@"有网"); }else{NSLog(@"没有网");UIAlertView*alert = [[UIAlertViewalloc]initWithTitle:@"网络失去连接"message:nildelegate:selfcancelButtonTitle:@"取消"otherButtonTitles:nil,nil]; alert.delegate =self; [alert show]; }}];
将此代码写在AppDelegate.m中,就可以实现实时监测网络状态了。