2013-02-06 45 views
2

我想在iPhone上獲取網絡類型。我使用下列程序:iOS,確定網絡訪問類型

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

我能成功地得到網絡類型,而應用程序是在前臺,但是當應用程序在後臺沒有更新的網絡類型。任何人都可以告訴我如何讓程序在後臺更新信息?

感謝

回答

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 

     }