繁体   English   中英

如何在没有可达性类的情况下检查iPhone中的互联网连接?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM