通过系统statusBar判断设备网络状态 (已适配iPhone X)
+ (NSString *)deviceNetWorkStatus
{
UIApplication *app = [UIApplication sharedApplication];
int type = 0;
if (!IS_IPHONE_X) {
NSArray *children = [[[app valueForKeyPath:@"statusBar"] valueForKeyPath:@"foregroundView"] subviews];
for (id child in children) {
if ([child isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) {
type = [[child valueForKeyPath:@"dataNetworkType"] intValue];
}
}
} else {
NSArray *array = [[[[app valueForKeyPath:@"statusBar"] valueForKeyPath:@"statusBar"] valueForKeyPath:@"foregroundView"] subviews];
NSArray *children = [array[2] subviews];
for (id child in children) {
if ([child isKindOfClass:NSClassFromString(@"_UIStatusBarWifiSignalView")]) {
type = 5;
} else if ([child isKindOfClass:NSClassFromString(@"_UIStatusBarStringView")]){
return [child valueForKeyPath:@"originalText"];
}
}
}
switch (type) {
case 1:
return @"2G";
case 2:
return @"3G";
case 3:
return @"4G";
case 5:
return @"WIFI";
default:
return @"UNKNOWN";
}
}