一、Reachability // 監聽網絡狀態改變的通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkStateChange) name:kReachabilityChangedNotification object:nil]; // 創建Reachability self.conn = [Reachability reachabilityForInternetConnection]; // 開始監控網絡(一旦網絡狀態發生改變, 就會發出通知kReachabilityChangedNotification) [self.conn startNotifier]; // 處理網絡狀態改變 - (void)networkStateChange { // 1.檢測wifi狀態 Reachability *wifi = [Reachability reachabilityForLocalWiFi]; // 2.檢測手機是否能上網絡(WIFI\3G\2.5G) Reachability *conn = [Reachability reachabilityForInternetConnection]; // 3.判斷網絡狀態 if ([wifi currentReachabilityStatus] != NotReachable) {
// 有wifi NSLog(@"有wifi"); } else if ([conn currentReachabilityStatus] != NotReachable) {
// 沒有使用wifi, 使用手機自帶網絡進行上網 NSLog(@"使用手機自帶網絡進行上網"); } else {
// 沒有網絡 NSLog(@"沒有網絡"); } }
二、AFNetworking // 1.獲得網絡監控的管理者 AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager]; // 2.設置網絡狀態改變后的處理 [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
// 當網絡狀態改變了, 就會調用這個block
switch (status) {
case AFNetworkReachabilityStatusUnknown:
// 未知網絡
NSLog(@"未知網絡");
break;
case AFNetworkReachabilityStatusNotReachable:
// 沒有網絡(斷網)
NSLog(@"沒有網絡(斷網)");
break;
case AFNetworkReachabilityStatusReachableViaWWAN:
// 手機自帶網絡
NSLog(@"手機自帶網絡");
break;
case AFNetworkReachabilityStatusReachableViaWiFi:
// WIFI
NSLog(@"WIFI");
break;
}
}];
// 3.開始監控
[manager startMonitoring];
