iOS获取手机网络信号📶类型
用到Reachability和CoreTelephony
- (NSString *)currentNetworkStatus {
NSString *network = @"NULL";
@try {
Reachability *reachability = [Reachability reachabilityForInternetConnection];
NetworkStatus status = [reachability currentReachabilityStatus];
if (status == ReachableViaWiFi) {
network = @"WIFI";
} else if (status == ReachableViaWWAN) {
static CTTelephonyNetworkInfo *netinfo = nil;
NSString *currentRadioAccessTechnology = nil;
if (!netinfo) {
netinfo = [[CTTelephonyNetworkInfo alloc] init];
}
#ifdef __IPHONE_12_0
if (@available(iOS 12.1, *)) {
currentRadioAccessTechnology = netinfo.serviceCurrentRadioAccessTechnology.allValues.lastObject;
}
#endif
//测试发现存在少数 12.0 和 12.0.1 的机型 serviceCurrentRadioAccessTechnology 返回空
if (!currentRadioAccessTechnology) {
currentRadioAccessTechnology = netinfo.currentRadioAccessTechnology;
}
if ([currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyGPRS]) {
network = @"2G";
} else if ([currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyEdge]) {
network = @"2G";
} else if ([currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyWCDMA]) {
network = @"3G";
} else if ([currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyHSDPA]) {
network = @"3G";
} else if ([currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyHSUPA]) {
network = @"3G";
} else if ([currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMA1x]) {
network = @"3G";
} else if ([currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMAEVDORev0]) {
network = @"3G";
} else if ([currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMAEVDORevA]) {
network = @"3G";
} else if ([currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMAEVDORevB]) {
network = @"3G";
} else if ([currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyeHRPD]) {
network = @"3G";
} else if ([currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyLTE]) {
network = @"4G";
} else {
if (@available(iOS 14.1, *)) {
if ([currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyNRNSA]){
network = @"5G NSA";
}else if ([currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyNR]){
network = @"5G";
}
}else{
network = @"UNKNOWN";
}
}
}
} @catch (NSException *exception) {
NSLog(@"%@: %@", self, exception);
}
return network;
}
未经作者授权,禁止转载
本文来自博客园,作者:CoderWGB,转载请注明原文链接:https://www.cnblogs.com/wgb1234/articles/16244201.html
THE END

浙公网安备 33010602011771号