实现网络状态监听的步骤
定义Reachability类型的成员变量来保存网络的状态
@PRoperty (nonatomic, strong) Reachability *reachability;
注册为通知中心的的观察者
// 在通知中心注册观察者[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getNetworkStatus) name:kReachabilityChangedNotification object:nil];/*** getNetworkStatus:监听到通知的回调方法* kReachabilityChangedNotification:通知的类型,即网络状态发生改变时,触发通知* object:传递给getNetworkStatus回调方法的参数*/// 获取并保存网络状态self.reachability = [Reachability reachabilityForInternetConnection];// 开始监听[self.reachability startNotifier];
在监听到通知的触发方法中判断网络的状态
- (void)getNetworkStatus{ if ([Reachability reachabilityForLocalWiFi].currentReachabilityStatus != NotReachable) { NSLog(@"是WIFI"); } else if ([Reachability reachabilityForInternetConnection].currentReachabilityStatus != NotReachable) { NSLog(@"是手机自带网络"); } else { NSLog(@"网络有问题"); }}
将观察者从通知中心移除,停止监听,清空网络监听对象
- (void)dealloc{ [[NSNotificationCenter defaultCenter] removeObserver:self]; [self.reachability stopNotifier]; self.reachability = nil;}
实现网络状态监听的
获取AFNetworkReachabilityManager的实例
AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
设置manager在网络发生变化的时回调的Block
[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { NSLog(@"----当前网络状态---%zd", status);}];/*** status:表示当前网络的状态,是个枚举类型变量,具有以下取值* AFNetworkReachabilityStatusUnknown = -1* AFNetworkReachabilityStatusNotReachable = 0* AFNetworkReachabilityStatusReachableViaWWAN = 1* AFNetworkReachabilityStatusReachableViaWiFi = 2*/
开始监听
[manager startMonitoring];
新闻热点
疑难解答