實現網絡狀態監聽的步驟
定義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;}實現網絡狀態監聽的
獲取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];
新聞熱點
疑難解答