ios-通過Reachability監聽網路狀態
阿新 • • 發佈:2019-02-05
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; } }