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

3

我正在开发一款应用程序,该应用程序将使用iPhone的WiFi和蜂窝数据调用Web服务。我的应用程序在WiFi和3G网络上运行良好,但在4G网络上无法运行。请告诉我如何检测应用程序是通过3G还是4G连接,并解决与4G网络相关的问题。

任何帮助都将不胜感激。 提前致谢。

1个回答

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

致谢:-

如何判断3G和Edge网络

Objective-C代码确定iOS设备的数据网络类型


当我的应用程序在后台运行时,我需要这个结果。 - Patel Jigar
@Nitin Gohel,我认为这是一个私有API,所以可能会被苹果拒绝。如果使用上述代码,苹果是否会批准您的应用程序?请建议我,这样我在上传应用程序到苹果商店之前就可以了解相关情况。 - Nikunj Jadav
可能是由于苹果方面的许多更改,现在出现了很多问题。 - Nitin Gohel
不建议使用私有API,而且这并没有真正解决问题。问题的根源在于找出为什么在4G上无法工作。 - DevGansta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接