iOS, Определить тип доступа к сети

Я пытаюсь получить тип сети на 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"];
}

Я могу успешно получить тип сети, пока приложение находится на переднем плане, но тип сети не обновляется, когда приложение находится в фоновом режиме. Может ли кто-нибудь рассказать мне, как я могу получить процедуру обновления информации в фоновом режиме?

Спасибо


person user1145581    schedule 06.02.2013    source источник


Ответы (2)


в 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

        }
person Noundla Sandeep    schedule 22.08.2014

То, что вы здесь делаете, очень плохо, я боюсь, вы должны использовать код Reachability от Apple, вы можете использовать его, чтобы узнать, есть ли сеть и какая (3G, WiFi и т. Д.)

Проверьте код:

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

person Daniel    schedule 06.02.2013