监测网络状态
说明:可以使用AFN框架中的AFNetworkReachabilityManager来监听网络状态的改变,也可以利用苹果提供的Reachability来监听。建议在开发中直接使用AFN框架处理。
使用AFN框架来检测网络状态的改变
//使用AFN框架来检测网络状态的改变 -(void)AFNReachability { //1.创建网络监听管理者 AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager]; //2.监听网络状态的改变 /* AFNetworkReachabilityStatusUnknown = 未知 AFNetworkReachabilityStatusNotReachable = 没有网络 AFNetworkReachabilityStatusReachableViaWWAN = 3G AFNetworkReachabilityStatusReachableViaWiFi = WIFI */ [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { switch (status) { case AFNetworkReachabilityStatusUnknown: NSLog(@"未知"); break; case AFNetworkReachabilityStatusNotReachable: NSLog(@"没有网络"); break; case AFNetworkReachabilityStatusReachableViaWWAN: NSLog(@"3G"); break; case AFNetworkReachabilityStatusReachableViaWiFi: NSLog(@"WIFI"); break; default: break; } }]; //3.开始监听 [manager startMonitoring]; }
使用苹果提供的Reachability来检测网络状态
//使用苹果提供的Reachability来检测网络状态,如果要持续监听网络状态的概念,需要结合通知一起使用。 //提供下载地址:https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { //1.注册一个通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkChange) name:kReachabilityChangedNotification object:nil]; //2.拿到一个对象,然后调用开始监听方法 Reachability *r = [Reachability reachabilityForInternetConnection]; [r startNotifier]; //持有该对象,不要让该对象释放掉 self.r = r; }
//当控制器释放的时候,移除通知的监听 -(void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; }
-(void)networkChange { //获取当前网络的状态 if ([Reachability reachabilityForInternetConnection].currentReachabilityStatus == ReachableViaWWAN) { NSLog(@"当前网络状态为3G"); return; } if ([Reachability reachabilityForLocalWiFi].currentReachabilityStatus == ReachableViaWiFi) { NSLog(@"当前网络状态为wifi"); return; } NSLog(@"当前没有网络"); }