如何检测网络类型,即3G / 4G?

时间:2013-07-11 06:11:11

标签: iphone ios

我正在开发一个应用程序,它将使用WiFi以及iPhone的移动数据来调用Web服务。我的应用程序在WiFi和3G网络上运行良好,但它不适用于4G网络。所以请告诉我如何通过3g或4G检测应用是否连接,以及如何解决与4G网络相关的问题。

任何帮助都会很明显。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

这里是同样的问题,可能是下面的例子代码可以帮到你。使用私有API,您可以直接在状态栏中阅读此信息。

https://github.com/nst/MobileSignal/blob/master/Classes/UIApplication+MS.m

+ (NSNumber *)dataNetworkTypeFromStatusBar {

    UIApplication *app = [UIApplication sharedApplication];

    UIStatusBar *statusBar = [app valueForKey:@"statusBar"];

    UIStatusBarForegroundView *foregroundView = [statusBar valueForKey:@"foregroundView"];

    NSArray *subviews = [foregroundView subviews];

    UIStatusBarDataNetworkItemView *dataNetworkItemView = nil;

    for (id subview in subviews) {
        if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]]) {
            dataNetworkItemView = subview;
            break;
        }
    }

    return [dataNetworkItemView valueForKey:@"dataNetworkType"];
}

归功于: -

Determining 3G vs Edge

Objective-C determine data network type of the iOS device