標籤:ios 網路
使用系統的方法來監聽網路狀態
- 系統的方法是通過通知機制來實現網路狀態的監聽
實現網路狀態監聽的步驟
- 定義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;}
使用AFNetworking監聽網路狀態
- 通過AFN監聽網路狀態比較簡單
實現網路狀態監聽的
- 擷取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];
本部落格的最新狀態將會同步到新浪微博帳號:世俗孤島
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
iOS網路-06-監聽Iphone的網路狀態