方法一:
- (NSString *)networkingStatesFromStatebar {
// 状态栏是由当前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") class]]) {
type = [[child valueForKeyPath:@"dataNetworkType"] intValue];
}
}
NSString *stateString = @"wifi";
switch (type) {
case 0:
stateString = @"notReachable";
break;
case 1:
stateString = @"2G";
break;
case 2:
stateString = @"3G";
break;
case 3:
stateString = @"4G";
break;
case 4:
stateString = @"LTE";
break;
case 5:
stateString = @"wifi";
break;
default:
break;
}
return stateString;
}
方法二:
AFNetworkReachabilityManager
AFNetworkReachabilityManager
*manager=[
AFNetworkReachabilityManager
sharedManager
];
/**
* 监听网络状态
*
* @param status 网络状态类型 枚举型
*/
[manager setReachabilityStatusChangeBlock :^( AFNetworkReachabilityStatus status) {
switch (status) {
case - 1 :
[ MBProgressHUD showError : @" 网络不可知 " ];
break ;
case 0 :
[ MBProgressHUD showError : @" 当前处于无网络状态 " ];
break ;
case 1 :
LVLog ( @" 当前处于移动网络状态 " );
break ;
case 2 :
LVLog ( @" 当前处于 WiFi 网络状态 " );
break ;
default :
break ;
}
}];
/**
* 监听网络状态
*
* @param status 网络状态类型 枚举型
*/
[manager setReachabilityStatusChangeBlock :^( AFNetworkReachabilityStatus status) {
switch (status) {
case - 1 :
[ MBProgressHUD showError : @" 网络不可知 " ];
break ;
case 0 :
[ MBProgressHUD showError : @" 当前处于无网络状态 " ];
break ;
case 1 :
LVLog ( @" 当前处于移动网络状态 " );
break ;
case 2 :
LVLog ( @" 当前处于 WiFi 网络状态 " );
break ;
default :
break ;
}
}];
[manager startMonitoring];