標籤:
網路監控
隨著移動網路升級: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篇&(五)網路監控