網絡環境的判斷有兩種方式
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'
- Homepage: https://github.com/AFNetworking/AFNetworking
- Source: https://github.com/AFNetworking/AFNetworking.git
找到資源路徑 下載即可
初次發表 如有不足還請大神們指正