iOS中如何判断5G网络呢?Xcode12.1中CTRadioAccessTechnologyNRNSA和CTRadioAccessTechnologyNR
NR是New Radio的缩写,新无线(5G)的意思,NRNSA表示5G NR的非独立网(NSA )模式:
https://zh.wikipedia.org/wiki/5G%E6%96%B0%E6%97%A0%E7%BA%BF
使用了Reachability进行网络判断:
+ (NSString *)networkStatus{
Reachability *reachability = [Reachability reachabilityWithHostName:@"www.apple.com"];
NetworkStatus internetStatus = [reachability currentReachabilityStatus];
NSString *net = @"WIFI";
switch (internetStatus) {
case ReachableViaWiFi:
net = @"WIFI";
break;
case ReachableViaWWAN:
net = [self getNetType]; //判断具体类型
break;
case NotReachable:
net = @"当前无网路连接";
default:
break;
}
return net;
}
+ (NSString *)getNetType
{
CTTelephonyNetworkInfo *info = [[CTTelephonyNetworkInfo alloc] init];
NSString *currentStatus = info.currentRadioAccessTechnology;
NSString *currentNet = @"5G";
if ([currentStatus isEqualToString:CTRadioAccessTechnologyGPRS]) {
currentNet = @"GPRS";
}else if ([currentStatus isEqualToString:CTRadioAccessTechnologyEdge]) {
currentNet = @"2.75G EDGE";
}else if ([currentStatus isEqualToString:CTRadioAccessTechnologyWCDMA]){
currentNet = @"3G";
}else if ([currentStatus isEqualToString:CTRadioAccessTechnologyHSDPA]){
currentNet = @"3.5G HSDPA";
}else if ([currentStatus isEqualToString:CTRadioAccessTechnologyHSUPA]){
currentNet = @"3.5G HSUPA";
}else if ([currentStatus isEqualToString:CTRadioAccessTechnologyCDMA1x]){
currentNet = @"2G";
}else if ([currentStatus isEqualToString:CTRadioAccessTechnologyCDMAEVDORev0]){
currentNet = @"3G";
}else if ([currentStatus isEqualToString:CTRadioAccessTechnologyCDMAEVDORevA]){
currentNet = @"3G";
}else if ([currentStatus isEqualToString:CTRadioAccessTechnologyCDMAEVDORevB]){
currentNet = @"3G";
}else if ([currentStatus isEqualToString:CTRadioAccessTechnologyeHRPD]){
currentNet = @"HRPD";
}else if ([currentStatus isEqualToString:CTRadioAccessTechnologyLTE]){
currentNet = @"4G";
}else if (@available(iOS 14.0, *)) {
if ([currentStatus isEqualToString:CTRadioAccessTechnologyNRNSA]){
currentNet = @"5G NSA";
}else if ([currentStatus isEqualToString:CTRadioAccessTechnologyNR]){
currentNet = @"5G";
}
}
return currentNet;
}