naotokui
10/31/2012 - 5:36 AM

Detect Network Type on iOS ... from the status bar

Detect Network Type on iOS ... from the status bar

// http://stackoverflow.com/questions/8400340/determining-3g-vs-edge

- (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 = No wifi or cellular
// 1 = 2G and earlier? (not confirmed)
// 2 = 3G? (not yet confirmed)
// 3 = 4G
// 4 = LTE
// 5 = Wifi