[英]How to check the internet Connection in iPhone without Reachability classes?
我想在不使用可达性类别的情况下检查iPhone中的互联网连接。 我想在我的视图中触发特定事件时不断检查连接。 我还想确定连接是来自Wifi还是2G或3G连接。 我已经尝试过使用可达性类。 但是,如果Wifi处于开启状态,则这些类仅返回值(尽管从Wifi路由器上拔出了网线)。 我努力了
[互联网连接的可达性可达性]
和
[可达到性reachabilityWithHostName:@“ www.google.com”];
但是,尽管网络断开,上述方法似乎仍无法正常工作。
还有什么办法可以确定iOS6中netwrok 2G或3G的类型? 我知道我们拥有只能在iOS 7中运行的Core Telephony Framework。但是我只想知道我是否可以确定蜂窝网络iOS 6.0。 请帮我。
没有可达性类的工作代码,也可以在iOS 6中工作:
- (NSNumber *) dataNetworkTypeFromStatusBar {
UIApplication *app = [UIApplication sharedApplication];
NSArray *subviews = [[[app valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews];
NSNumber *dataNetworkItemView = nil;
for (id subview in subviews) {
if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]]) {
dataNetworkItemView = subview;
break;
}
}
return [dataNetworkItemView valueForKey:@"dataNetworkType"];
}
到目前为止,我发现的值键是:
0 =没有wifi或手机
1 = 2G和更早版本?
2 = 3G?
3 = 4G
4 = LTE
5 = Wifi
或在iOS7中使用CoreTelephony
框架
CTTelephonyNetworkInfo *telephonyInfo = [CTTelephonyNetworkInfo new];
NSLog(@"Current Radio Access Technology: %@", telephonyInfo.currentRadioAccessTechnology);
[NSNotificationCenter.defaultCenter addObserverForName:CTRadioAccessTechnologyDidChangeNotification
object:nil
queue:nil
usingBlock:^(NSNotification *note)
{
NSLog(@"New Radio Access Technology: %@", telephonyInfo.currentRadioAccessTechnology);
}];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.