当前位置: 首页 > 工具软件 > Reachability > 使用案例 >

ios-通过Reachability监听网络状态

陶山
2023-12-01

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;
    }
}
其实我们也可以没有必要去实时的监听,在做网络状态访问的时候我们进行判断其实就可以。
 类似资料: