Reachability实际上是苹果公司对SCNetworkReachability API做的封装,这个API被定义在SystemConfigure.framework库中,网上可以去下Reachability框架,在AFN中其实监听网络的状态就是对这个框架做了一个封装,在AFN中应该有这么一个类AFNetworkReachabilityManager。那么我们如果想要实时的去监听网络的状态应该如何去做?其实这个框架里面都给我们写好了,我们只需要去调用相应的函数就可以了。
首先去创建一个Reachability对象
@property(nonatomic,strong)Reachability * reachabilityManager;
-(Reachability *)reachabilityManager
{
if (!_reachabilityManager) {
//通过检查某个主机能否访问来判断当前网络是否可用,判断网络连接状况
_reachabilityManager = [Reachability reachabilityWithHostName:@"www.baidu.com"];
}
return _reachabilityManager;
}
如果我们要实时的去监听网络的状态的改变就需要去注册通知
//注册通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(chechStatus:) name:kReachabilityChangedNotification
object:nil];
//启动监听
[self.reachabilityManager startNotifier];
然后注销通知
-(void)dealloc{
[self.reachabilityManager stopNotifier];
//注销通知
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
根据状态判断
-(void)chechStatus:(NSNotification *)not{
switch(self.reachabilityManager.currentReachabilityStatus){
case NotReachable:
NSLog(@"无连接");
break;
case ReachableViaWiFi:
NSLog(@"WIFI");
break;
case ReachableViaWWAN:
NSLog(@"流量");
break;
default:
break;
}
}
其实我们也可以没有必要去实时的监听,在做网络状态访问的时候我们进行判断其实就可以。