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;
}