实时判断网络状态

方法一:利用系统状态栏判断网络状态

// 状态栏是由当前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中,就可以实现实时监测网络状态了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容