iOS開發——網路編程OC篇&(五)網路監控

來源:互聯網
上載者:User

標籤:

網路監控

隨著移動網路升級:2G->3G->4G甚至相傳正在研發的5G,網路速度是越來越快,但這流量也像流水一般嘩嘩的溜走。

網上不是流傳一個段子: 睡覺忘記關流量,第二天房子就歸移動了!

這固然是一種誇張的說法,但是作為一個優秀的App開發人員,我們需要在App中給出最恰當的提示。

在需要花費大量流量的時候(例如:視頻,下載等)給出一些提示。

在使用者視頻期間使用者切換網路的時候給出是否繼續觀看的提示!

下面筆者就給出一種可以即時監控網路狀態改變的方法!

筆者使用的是網路流傳最廣的網路監控類:Reachability

點擊此處下載本文Demo:點擊下載

將上部所下載的檔案解壓,將NetworkReachability檔案夾加入你需要添加的工程之中。

樣本說明:此樣本用於示範關於如何使用SystemConfiguratio Reachalility程式介面來判定相關的網路連接狀態及狀態 變 化,所以在使用此樣本中的Reachability.(h/m)檔案於自有的項目中的前提是必須引入 SystemConfiguration.framework。

 一:Reachability的使用方法

 

 

 

 1 - (void)viewDidLoad 2 { 3     [super viewDidLoad]; 4      5     // 監聽網路狀態發生改變的通知 6     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkStateChange) name:kReachabilityChangedNotification object:nil]; 7      8     // 獲得Reachability對象 9     self.reachability = [Reachability reachabilityForInternetConnection];10     // 開始監控網路11     [self.reachability startNotifier];12 13 //    // 1.獲得Reachability對象14 //    Reachability *wifi = [Reachability reachabilityForLocalWiFi];15 //    16 //    // 2.獲得Reachability對象的當前網路狀態17 //    NetworkStatus wifiStatus = wifi.currentReachabilityStatus;18 //    if (wifiStatus != NotReachable) {19 //        NSLog(@"是WIFI");20 //    }21 }22 23 - (void)dealloc24 {25     [self.reachability stopNotifier];26     [[NSNotificationCenter defaultCenter] removeObserver:self];27 }28 29 - (void)networkStateChange30 {31     NSLog(@"網路狀態改變了");32     [self checkNetworkState];33 }34 35 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event36 {37     [self checkNetworkState];38 }39 40 /**41  *  監測網路狀態42  */43 - (void)checkNetworkState44 {45     if ([iCocosNetworkTool isEnableWIFI]) {46         NSLog(@"WIFI環境");47     } else if ([iCocosNetworkTool isEnable3G]) {48         NSLog(@"手機內建網路");49     } else {50         NSLog(@"沒有網路");51     }52 }

 判斷

1 // 是否WIFI2 + (BOOL)isEnableWIFI {3     return ([[Reachability reachabilityForLocalWiFi] currentReachabilityStatus] != NotReachable);4 }5 6 // 是否3G7 + (BOOL)isEnable3G {8     return ([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] != NotReachable);9 }

 

 

 

 

二:AFN的使用方法:(AFN實際上也是使用了系統自到的Reachability來實現的)

 1 - (void)viewDidLoad 2 { 3     [super viewDidLoad]; 4      5     // Do any additional setup after loading the view, typically from a nib. 6      7     AFNetworkReachabilityManager *mgr = [AFNetworkReachabilityManager sharedManager]; 8     [mgr setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { 9         // 當網路狀態發生改變的時候調用這個block10         switch (status) {11             case AFNetworkReachabilityStatusReachableViaWiFi:12                 NSLog(@"WIFI");13                 break;14                 15             case AFNetworkReachabilityStatusReachableViaWWAN:16                 NSLog(@"內建網路");17                 break;18                 19             case AFNetworkReachabilityStatusNotReachable:20                 NSLog(@"沒有網路");21                 break;22                 23             case AFNetworkReachabilityStatusUnknown:24                 NSLog(@"未知網路");25                 break;26             default:27                 break;28         }29     }];30     // 開始監控31     [mgr startMonitoring];32     33 //    [[Reachability reachabilityForLocalWiFi] currentReachabilityStatus] = !NotReachable34 //    [[Reachability reachabilityForInternetConnection] currentReachabilityStatus] = !NotReachable;35     36     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reacgabilityChange:) name:kReachabilityChangedNotification object:nil];37     38 }39 40 - (void)dealloc41 {42     [[AFNetworkReachabilityManager sharedManager] stopMonitoring];43 }

 

 

 

 

 

   

iOS開發——網路編程OC篇&(五)網路監控

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.