我在使用一个从服务器接收数据的应用程序,问题是当用户连接到移动数据(而不是3G
或WIFI
)时,它需要很长时间才能接收数据。
我已经按照这个答案中的代码实现了,但我不确定它是否有效,有时它会给我正确的类型,有时却不会。
这是我的代码:
- (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 可达性示例,但它只能确定是否reachabilityForInternetConnection
或reachabilityForLocalWiFi
,但这对我没有帮助。
提前致谢。