typedef enum {
NetWorkType_None = 0,
NetWorkType_WIFI,
NetWorkType_2G,
NetWorkType_3G,
NetWorkType_4G,
} NetWorkType;
- (NetWorkType)getType
{
UIApplication *application = [UIApplicationsharedApplication];
NSArray *subviews = [[[application valueForKey:@"statusBar"] valueForKey:@"foregroundView"]subviews];
NSNumber *dataNetWorkItemView = nil;
for (id subViewin subviews) {
if ([subViewisKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView")class]]) {
dataNetWorkItemView = subView;
break;
}
}
NetWorkType networkType = NetWorkType_None;
switch ([[dataNetWorkItemView valueForKey:@"dataNetworkType"]integerValue]) {
case 0:
NSLog(@"No wifi or cellular");
networkType = NetWorkType_None;
break;
case 1:
NSLog(@"2G");
networkType = NetWorkType_2G;
break;
case 2:
NSLog(@"3G");
networkType = NetWorkType_3G;
break;
case 3:
networkType = NetWorkType_4G;
break;
default:
NSLog(@"Wifi");
networkType = NetWorkType_WIFI;
break;
}
return networkType;
}
NetWorkType n = [selfgetType];
NSString *string;
if (n ==NetWorkType_None)
{
NSLog(@"NotReachable");
string = @"N/A";
}
elseif (n == NetWorkType_WIFI)
{
NSLog(@"ReachableViaWiFi");
string = @"Wifi";
}
elseif (n == NetWorkType_2G)
{
NSLog(@"ReachableVia3G");
string = @"2G";
}
elseif (n == NetWorkType_3G)
{
NSLog(@"ReachableVia2G");
string = @"3G";
}
else
{
NSLog(@"ReachableVia4G");
string = @"4G";
}
//以下是swift版本判断网络状态