獲取設(shè)備當(dāng)前網(wǎng)絡(luò)類型,目前主要有兩種方案侧馅。
方案一:
使用蘋果提供的Reachability危尿。此方法的原理是通過無線接入技術(shù)來區(qū)分網(wǎng)絡(luò)類型。比如CTRadioAccessTechnologyLTE 為4G網(wǎng)絡(luò)技術(shù)馁痴,
CTRadioAccessTechnologyGPRS 和CTRadioAccessTechnologyEdge為2G網(wǎng)絡(luò)技術(shù)谊娇。
- (NSString *)getNetWorkInfo{
Reachability *reach = [Reachability reachabilityForInternetConnection];
NetworkStatus status = [reach currentReachabilityStatus];
switch(status)
{
case NotReachable:
return @"unknown";
case ReachableViaWWAN:
return @"wwan";
case ReachableViaWiFi:
return @"wifi";
case kReachableVia2G:
return @"2G";
case kReachableVia3G:
return @"3G";
case kReachableVia4G:
return @"4G";
default:
return @"";
}
}
方案二:
通過狀態(tài)欄上網(wǎng)絡(luò)類型圖標(biāo)類,通過KVO的方式獲取networktype罗晕。
-(void)networktype{
NSArray *subviews = [[[[UIApplication sharedApplication] valueForKey:@"statusBar"] valueForKey:@"foregroundView"]subviews];
NSNumber *dataNetworkItemView = nil;
for (id subview in subviews) {
if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]]) {
dataNetworkItemView = subview;
break;
}
}
switch ([[dataNetworkItemView valueForKey:@"dataNetworkType"]integerValue]) {
case 0:
NSLog(@"No wifi or cellular");
infoLabel.text=@"無服務(wù)";
break
case 1:
NSLog(@"2G");
infoLabel.text=@"2G";
break;
case 2:
NSLog(@"3G");
infoLabel.text=@"3G";
break;
case 3:
NSLog(@"4G");
infoLabel.text=@"4G";
break;
case 4:
NSLog(@"LTE");
infoLabel.text=@"LTE";
break;
case 5:
NSLog(@"Wifi");
infoLabel.text=@"Wifi";
break;
default:
break;
}}
參考:http://blog.csdn.net/justinjing0612/article/details/38313747
文章內(nèi)容部分參考自網(wǎng)絡(luò)济欢,如有版權(quán)問題請聯(lián)系linjitaoyt@gmail.com