1

我正在尝试在 iPhone 上获取网络类型。我正在使用以下程序:

(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"];
}

当应用程序在前台时,我可以成功获取网络类型,但是当应用程序在后台时,网络类型不会更新。谁能告诉我如何获得在后台更新信息的程序?

谢谢

4

2 回答 2

3

在 iOS 7.0+ 中,我们有CoreTelephony可以为我们提供有关网络类型所需详细信息的框架。

这是一个示例。

CTTelephonyNetworkInfo *telephonyInfo = [[CTTelephonyNetworkInfo alloc] init];
        NSString *currentRadio = telephonyInfo.currentRadioAccessTechnology;
        if ([currentRadio isEqualToString:CTRadioAccessTechnologyLTE]) {
            // LTE

        } else if([currentRadio isEqualToString:CTRadioAccessTechnologyEdge]) {
            // EDGE

        } else if([currentRadio isEqualToString:CTRadioAccessTechnologyWCDMA]){
            // 3G

        }
于 2014-08-22T11:41:29.620 回答
0

恐怕你在这里做的很糟糕,你应该使用Apple的Reachability代码,你可以用它来找出是否有网络以及什么样的网络(3G,WiFi等......)

查看代码:

http://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html

于 2013-02-06T15:02:59.443 回答