ios之網絡環境的判斷

網絡環境的判斷有兩種方式
1、Reachability
2、AFNetWorking中 AFNetworkReachabilityManager

Reachability步驟
(1)導入Reachability類名
(2)初始化Reachability對象,HostName 盡量用一個比較穩定的網絡
(3)添加觀察者,接收網絡環境發生改變的通知
(4)開始監測
(5)在通知中得到Reachability的對象

代碼實例
//1 導入頭文件

import "Reachability.h"

//2 創建Reachability對象 盡量用一個比較穩定的網站

     Reachability *reachability = [Reachability reachabilityWithHostName:@"www.baidu.com"];

// 3 添加觀察者 接收網絡環境變化的通知

/*
kReachabilityChangedNotification 網絡環境發生改變 通知的名字
NetworkStatus 網絡環境的枚舉
-(NSString*)currentReachabilityString 網絡環境的字符串
*/

  [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(change:) name:kReachabilityChangedNotification object:nil];  

//4 開始監測
//-(BOOL)startNotifier; 開始通知監測
//-(void)stopNotifier; 監測結束

[reachability startNotifier];

// 5 得到通知中的reachability對象 獲得網絡狀態
// notfication.object;得到reachability對象

  • (void)change:(NSNotification *)notfication{
    // notfication.object;得到reachability對象
    // 5 得到通知中的reachability對象 獲得網絡狀態
    Reachability *reachability = notfication.object;
    NSLog(@"%@",[reachability currentReachabilityString]);
    NSString *status = @"";
    switch (reachability.currentReachabilityStatus) {
    case NotReachable:{
    status = @"無網絡";
    }

        break;
    case ReachableViaWiFi:{
        status = @"WIFI網絡";
    }
        
        break;
    case ReachableViaWWAN:{
        status = @"WAN網絡";
    }
        
        break;
        
    default:
        break;
    

    }
    NSLog(@"%@",status);
    }

下面是第二種方法
AFNetWorking
(1)導入類庫
(2)創建檢測對象 類方法shareManager
(3)開始監測
(4)通過檢測對象 獲得檢測結果 回調方法(setReachabilityStatusChangeBlock:)

代碼實例
// 1) 導入類庫

import "AFNetworking.h"

// 2) 初始化AFNetworkReachabilityManager對象

 AFNetworkReachabilityManager *reachabilityMannger =   [AFNetworkReachabilityManager sharedManager];

// 3)開始監測
// - (void)startMonitoring;
// - (void)stopMonitoring;

[reachabilityMannger startMonitoring];

// 4)獲得監測的網絡狀態

  [reachabilityMannger setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
    NSString *result = @"";
    switch (status) {
        case AFNetworkReachabilityStatusUnknown:
            result = @"未知網絡";
            break;
        case AFNetworkReachabilityStatusNotReachable:
             result = @"無網絡";
            break;
        case AFNetworkReachabilityStatusReachableViaWWAN:
             result = @"WAN";
            break;
        case AFNetworkReachabilityStatusReachableViaWiFi:
             result = @"WIFI";
            break;
            
        default:
            break;
    }
       NSLog(@"%@",result);
}];

ps:以上兩種方式都需要下載下載reachability或者AFNetworking
以searchafnetworking 為例
方法 :打開終端 pod searchafnetworking
-> AFNetworking (3.0.4)
A delightful iOS and OS X networking framework.
pod 'AFNetworking', '~> 3.0.4'

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容