1. 程式人生 > >ios-通過Reachability監聽網路狀態

ios-通過Reachability監聽網路狀態

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;
    }
}
其實我們也可以沒有必要去實時的監聽,在做網路狀態訪問的時候我們進行判斷其實就可以。