我想在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"];
}
当应用程序位于前台时,我可以成功获取网络类型,但当应用程序在后台时,网络类型不会更新。任何人都可以告诉我如何在后台更新信息的程序?
由于
答案 0 :(得分: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
}
答案 1 :(得分:0)
你在这里做的非常糟糕我害怕,你应该使用Apple的Reachability代码,你可以用它来查看是否有网络和什么样的(3G,WiFi等... )
查看代码:
http://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html