我在从服务器接收数据的应用程序上,问题是当用户连接到cellular data
(不是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 Reachability 示例,但它可以确定是否reachabilityForInternetConnection
或只是reachabilityForLocalWiFi
但对我的情况没有帮助。
提前致谢。