//1.建立網絡狀态監測管理者
AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
//2.監聽改變
[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
switch (status) {
case AFNetworkReachabilityStatusUnknown:
NSLog(@"未知");
break;
case AFNetworkReachabilityStatusNotReachable:
NSLog(@"沒有網絡");
[MBProgressHUD showError:@"網絡不可用,請連接配接網絡"];
case AFNetworkReachabilityStatusReachableViaWWAN:
NSLog(@"3G|4G");
case AFNetworkReachabilityStatusReachableViaWiFi:
NSLog(@"WiFi");
default:
}
}];
[manager startMonitoring];//開始監聽
---------------------------------------------------
2️⃣
-利用系統狀态欄判斷網絡狀态// 狀态欄是由目前app控制的,首先擷取目前app
UIApplication *app = [UIApplication sharedApplication];
NSArray *children = [[[app valueForKeyPath:@"statusBar"] valueForKeyPath:@"foregroundView"] subviews];
int type = 0;
for (id child in children) {
if ([child isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) {
type = [[child valueForKeyPath:@"dataNetworkType"] intValue];
switch (type) {
case 1:
return @"2G";
case 2:
return @"3G";
case 3:
return @"4G";
case 5:
return @"WIFI";
return @“NO-WIFI";//代表未知網絡
警告 :此方法存在一定的局限性,比如當狀态欄被隐藏的時候,無法使用此方法。
----------------------------------------------------------
3️⃣
-通過Reachability架構 Reachability是一個在iOS系統環境下檢測iOS裝置目前的網絡環境的庫。它的主要功能是監測三種網絡環境:2G/3G/4G、WiFi網絡、無網絡。在應用的運作狀态下,實時監測網絡連接配接方式的變更,及時給出通知。Reachability的使用
首先需要在GitHub上下載下傳Reachability的壓縮包,解壓後将Reachability.h和Reachability.m檔案拖入工程當中,在使用的地方引入頭檔案即可(或者使用cocoapods管理第三方庫)。
1.直接擷取目前網絡環境:
//可以使用多種方式初始化
Reachability*reach=[Reachability reachabilityWithHostName:@"www.hcios.com"];
//2.判斷目前的網絡狀态
switch([reach currentReachabilityStatus]){
case ReachableViaWWAN:
NSLog(@"正在使用移動資料網絡");
case ReachableViaWiFi:
NSLog(@"正在使用WiFi");
NSLog(@"無網絡");
//根據currentReachabilityStatus方法擷取目前的網絡環境,ReachableViaWWAN表示移動資料網絡,ReachableViaWiFi表示WiFi網絡,NotReachable表示沒有接入網絡。
通知的方式擷取目前網絡環境:
Reachability *reach=[Reachability reachabilityWithHostName:@"www.hcios.com"];
//通知中心注冊通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:
@selector(reachabilityChanged:)name:kReachabilityChangedNotification object:nil];
//Reachability執行個體調用startNotifier方法啟動網絡狀态監測
[reach startNotifier];
//收到通知調用的方法
-(void)reachabilityChanged:(NSNotification*)notification{
Reachability *reach=[notification object];
//判斷網絡狀态
if(![reach isReachable]){
NSLog(@"網絡連接配接不可用");
}else{
if([reach currentReachabilityStatus]==ReachableViaWiFi){
}else if([reach currentReachabilityStatus]==ReachableViaWWAN){
NSLog(@"正在使用移動資料");
通過通知的方式使用Reachability是在程式中經常使用的,Reachability可以在使用者的網絡狀态發生改變時,及時給出通知提醒,防止資料流量的快速流失,在實際的項目應用中是十分常見的。