gpt4 book ai didi

iphone - Objective-C 判断 iOS 设备的数据网络类型

转载 作者:IT王子 更新时间:2023-10-29 08:05:06 24 4
gpt4 key购买 nike

我在从服务器接收数据的应用程序上,问题是当用户连接到蜂窝数据(不是3GWIFI)时,接收数据需要很长时间。

我已经从这个 Answer 实现了这个代码但我不确定它是否有效,有时它会给我一个准确的类型,有时却不会。

这是我的代码:

- (void)newtworkType {

NSArray *subviews = [[[[UIApplication sharedApplication] valueForKey:@"statusBar"] valueForKey:@"foregroundView"]subviews];
NSNumber *dataNetworkItemView = nil;

for (id subview in subviews) {
if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]]) {
dataNetworkItemView = subview;
break;
}
}

switch ([[dataNetworkItemView valueForKey:@"dataNetworkType"]integerValue]) {
case 0:
NSLog(@"No wifi or cellular");
break;

case 1:
NSLog(@"2G");
break;

case 2:
NSLog(@"3G");
break;

case 3:
NSLog(@"4G");
break;

case 4:
NSLog(@"LTE");
break;

case 5:
NSLog(@"Wifi");
break;


default:
break;
}}

这是我能做的最好的吗??,我试过了Apple Reachability example ,但它可以确定是 reachabilityForInternetConnection 还是只是 reachabilityForLocalWiFi 但这对我的情况没有帮助。

提前致谢。

最佳答案

如果使用 iOS 7+ 那么您可以通过以下方法从 CoreTelephony 框架获取信息:

CTTelephonyNetworkInfo *telephonyInfo = [CTTelephonyNetworkInfo new];
NSLog(@"Current Radio Access Technology: %@", telephonyInfo.currentRadioAccessTechnology);

您将获得的可能定义值如下:CTRadioAccessTechnologyGPRS, CTRadioAccessTechnologyEdge , CTRadioAccessTechnologyWCDMA , CTRadioAccessTechnologyLTE

关于iphone - Objective-C 判断 iOS 设备的数据网络类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16774885/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com