天天看點

iOS網絡狀态監測之Reachability的使用

1.Reachability簡介

Reachability是一個在iOS系統環境下檢測iOS裝置目前的網絡環境的庫。它的主要功能是監測三種網絡環境:2G/3G/4G、WiFi網絡、無網絡。在應用的運作狀态下,實時監測網絡連接配接方式的變更,及時給出通知。

2.Reachability的使用

首先需要在GitHub上下載下傳Reachability的壓縮包,解壓後将Reachability.h和Reachability.m檔案拖入工程當中,在使用的地方引入頭檔案即可。

iOS網絡狀态監測之Reachability的使用

直接擷取目前網絡環境:

  1. //可以使用多種方式初始化
  2. Reachability *reach = [Reachability reachabilityWithHostName:@"www.hcios.com"];
  3. //判斷目前的網絡狀态
  4. switch ([reach currentReachabilityStatus]) {
  5. case ReachableViaWWAN:
  6. NSLog(@"正在使用移動資料網絡");
  7. break;
  8. case ReachableViaWiFi:
  9. NSLog(@"正在使用WiFi");
  10. break;
  11. default:
  12. NSLog(@"無網絡");
  13. break;
  14. }

根據currentReachabilityStatus方法擷取目前的網絡環境,ReachableViaWWAN表示移動資料網絡,ReachableViaWiFi表示WiFi網絡,NotReachable表示沒有接入網絡。

通知的方式擷取目前網絡環境:

  1. //可以使用多種方式初始化
  2. Reachability *reach = [Reachability reachabilityWithHostName:@"www.hcios.com"];
  3. //通知中心注冊通知
  4. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];
  5. //Reachability執行個體調用startNotifier方法啟動網絡狀态監測
  6. [reach startNotifier];
  1. //收到通知調用的方法
  2. - (void)reachabilityChanged:(NSNotification *)notification {
  3. Reachability *reach = [notification object];
  4. //判斷網絡狀态
  5. if (![reach isReachable]) {
  6. NSLog(@"網絡連接配接不可用");
  7. } else {
  8. if ([reach currentReachabilityStatus] == ReachableViaWiFi) {
  9. NSLog(@"正在使用WiFi");
  10. } else if ([reach currentReachabilityStatus] == ReachableViaWWAN) {
  11. NSLog(@"正在使用移動資料");
  12. }
  13. }
  14. }

通過通知的方式使用Reachability是在程式中經常使用的,Reachability可以在使用者的網絡狀态發生改變時,及時給出通知提醒,防止資料流量的快速流失,在實際的項目應用中是十分常見的。