iOS 手机网络类型和运营商怎么获取

Reachability 只能判断是WiFi还是蜂窝网络,无法获取到具体的类型是3G还是4G,现在获取手机网络类型可以直接使用苹果原生API了:

首先我们导入库  CoreTelephony.framework

然后在我们的类中加入下面头文件

[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. #import <CoreTelephony/CTTelephonyNetworkInfo.h>    
  2. #import <CoreTelephony/CTCarrier.h>    

下面是获取网络环境的方法:

基本原理是从UIApplication类型中通过valueForKey获取内部属性statusBar。然后筛选一个内部类型(UIStatusBarDataNetworkItemView),最后返回他的dataNetworkType属性。

[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. //获取联网方式  
  2. -(NSString *)networkType  
  3. {  
  4.     NSArray *subviews = [[[[UIApplication sharedApplication] valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews];  
  5.     NSNumber *dataNetworkItemView = nil;  
  6.       
  7.     for (id subview in subviews) {  
  8.         if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]]) {  
  9.             dataNetworkItemView = subview;  
  10.             break;  
  11.         }  
  12.     }  
  13.     NSString *networkType = nil;  
  14.     switch ([[dataNetworkItemView valueForKey:@"dataNetworkType"] integerValue]) {  
  15.         case 0:  
  16.             networkType = @"无服务";  
  17.             break;  
  18.               
  19.         case 1:  
  20.             networkType = @"2G";  
  21.             break;  
  22.               
  23.         case 2:  
  24.             networkType = @"3G";  
  25.             break;  
  26.               
  27.         case 3:  
  28.             networkType = @"4G";  
  29.             break;  
  30.               
  31.         case 4:  
  32.             networkType = @"LTE";  
  33.             break;  
  34.               
  35.         case 5:  
  36.             networkType = @"Wifi";  
  37.             break;  
  38.               
  39.         default:  
  40.             break;  
  41.     }  
  42.     return networkType;  
  43. }  

下面是如何获取运营商名称:  

[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. //获取运营商信息  
  2. -(NSString *)getCarrierName  
  3. {  
  4.     CTTelephonyNetworkInfo *telephonyInfo = [[CTTelephonyNetworkInfo alloc] init];  
  5.     CTCarrier *carrier = [telephonyInfo subscriberCellularProvider];  
  6.     NSString *currentCountry = [carrier carrierName];  
  7.     return currentCountry;  
  8. }  


转自:http://blog.csdn.net/dean19900504/article/details/44648583
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值