当前无线接入技术&x27;已弃用:首次在iOS 12.0中弃用
我是Objective-C的新手。我对以下代码有问题。它显示“currentRadioAccessTechnology”已弃用:首先在iOS 12.0中弃用,如果我替换代码,则将“currentRadioAccessTechnology”替换为“serviceCurrentRadioAccessTechnology”。它给出了以下错误:“NSDictionary”没有可见的@interface声明选择器“isEqualToString:”当前无线接入技术&x27;已弃用:首次在iOS 12.0中弃用,ios,objective-c,xcode,core-telephony,Ios,Objective C,Xcode,Core Telephony,我是Objective-C的新手。我对以下代码有问题。它显示“currentRadioAccessTechnology”已弃用:首先在iOS 12.0中弃用,如果我替换代码,则将“currentRadioAccessTechnology”替换为“serviceCurrentRadioAccessTechnology”。它给出了以下错误:“NSDictionary”没有可见的@interface声明选择器“isEqualToString:” - (NSString*)w3cConnectionTy
- (NSString*)w3cConnectionTypeFor:(CDVReachability*)reachability
{
NetworkStatus networkStatus = [reachability currentReachabilityStatus];
switch (networkStatus) {
case NotReachable:
return @"none";
case ReachableViaWWAN:
{
BOOL isConnectionRequired = [reachability connectionRequired];
if (isConnectionRequired) {
return @"none";
} else {
if ([[[UIDevice currentDevice] systemVersion] compare:@"7.0" options:NSNumericSearch] != NSOrderedAscending) {
CTTelephonyNetworkInfo *telephonyInfo = [CTTelephonyNetworkInfo new];
if ([telephonyInfo.serviceCurrentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyGPRS]) {
return @"2g";
} else if ([telephonyInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyEdge]) {
return @"2g";
} else if ([telephonyInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyWCDMA]) {
return @"3g";
} else if ([telephonyInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyHSDPA]) {
return @"3g";
} else if ([telephonyInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyHSUPA]) {
return @"3g";
} else if ([telephonyInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMA1x]) {
return @"3g";
} else if ([telephonyInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMAEVDORev0]) {
return @"3g";
} else if ([telephonyInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMAEVDORevA]) {
return @"3g";
} else if ([telephonyInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMAEVDORevB]) {
return @"3g";
} else if ([telephonyInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyeHRPD]) {
return @"3g";
} else if ([telephonyInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyLTE]) {
return @"4g";
}
}
return @"cellular";
}
}
case ReachableViaWiFi:
{
BOOL isConnectionRequired = [reachability connectionRequired];
if (isConnectionRequired) {
return @"none";
} else {
return @"wifi";
}
}
default:
return @"unknown";
}
}
serviceCurrentRadioAccessTechnology
是一个字典,而不是字符串,因为设备可能有两个SIM,因此有多个载波。您需要从每个字典条目中获取值。检索字典键并使用它访问服务类型。无论如何,你的应用程序都不应该根据连接类型做出决定。网络框架可以告诉您是否在低数据网络上,您可以据此做出决定。serviceCurrentRadioAccessTechnology
是一个字典,而不是字符串,因为设备可能有双SIM,因此有多个载波。您需要从每个字典条目中获取值。检索字典键并使用它访问服务类型。无论如何,你的应用程序都不应该根据连接类型做出决定。网络框架可以告诉您是否在低数据网络上,您可以据此做出决策。