iOS网络监测如何区分2、3、4G?
2015-09-15 15:33
501 查看
首先,引入系统的Reachability类,不知道怎么引入的话,在Xcode,按下shift+command+0,搜索Reachability,看到图中所选的工程下载即可。
引入后,Reachability.h文件里面修改NetworkStatus的枚举,
在修改下Reachability.m文件
找到
修改下面的代码
在AppDelegate里加入
阅读原文
导入相关.h文件
#import<CoreTelephony/CTTelephonyNetworkInfo.h>
引入后,Reachability.h文件里面修改NetworkStatus的枚举,
typedef enum : NSInteger { NotReachable = 0, ReachableViaWiFi, ReachableViaWWAN, kReachableVia2G, kReachableVia3G, kReachableVia4G } NetworkStatus;
在修改下Reachability.m文件
找到
- (NetworkStatus)networkStatusForFlags:(SCNetworkReachabilityFlags)flags
修改下面的代码
if ((flags & kSCNetworkReachabilityFlagsIsWWAN) == kSCNetworkReachabilityFlagsIsWWAN) { if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) { CTTelephonyNetworkInfo * info = [[CTTelephonyNetworkInfo alloc] init]; NSString *currentRadioAccessTechnology = info.currentRadioAccessTechnology; if (currentRadioAccessTechnology) { if ([currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyLTE]) { returnValue = kReachableVia4G; } else if ([currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyEdge] || [currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyGPRS]) { returnValue = kReachableVia2G; } else { returnValue = kReachableVia3G; } return returnValue; } } if ((flags & kSCNetworkReachabilityFlagsTransientConnection) == kSCNetworkReachabilityFlagsTransientConnection) { if((flags & kSCNetworkReachabilityFlagsConnectionRequired) == kSCNetworkReachabilityFlagsConnectionRequired) { returnValue = kReachableVia2G; return returnValue; } returnValue = kReachableVia3G; return returnValue; } returnValue = ReachableViaWWAN; }
如何使用?
在AppDelegate里加入- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //设置状态栏 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault]; // 监测网络情况 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name: kReachabilityChangedNotification object: nil]; hostReach = [Reachability reachabilityWithHostName:@"www.baidu.com"]; [hostReach startNotifier]; } - (void)reachabilityChanged:(NSNotification *)note { Reachability* curReach = [note object]; NSParameterAssert([curReach isKindOfClass: [Reachability class]]); NetworkStatus status = [curReach currentReachabilityStatus]; switch (status) { case NotReachable: break; case ReachableViaWiFi: case ReachableViaWWAN: break; case kReachableVia2G: break; case kReachableVia3G: break; case kReachableVia4G: break; } }
阅读原文
相关文章推荐
- Kickstart+HTTP+DHCP+TFTP全自动批量安装部署Linux系统
- HTTP 的应答码,错误码,通信码
- http连接池使用
- TCP/IP协议数据传输中一些限制性字段
- 错误信息:A TCP error (10013: 以一种访问权限不允许的方式做了一个访问套接字的尝试。) occurred while listening on IP Endpoint=192.168.1.18:8002.
- hdu-5442(后缀数组,2015网络赛长春赛区)
- IOS AFNetworking https
- httpclient传参调用服务端方法
- HTTP File Server SoftWare
- HTTPConnection与HTTPClient的区别
- http协议与web本质
- swoole swoole_http yaf medoo 微信
- HTTP协议和web工作原理
- http
- 浅谈HttpClient
- Android之从网络上获取图片的两种方式讲解:thread+handle和AsyncTask方式
- (1)fcntl函数说明 F_SETLK/F_SETLKW例子 http://www.jb51.net/article/37671.htm
- java 请求http
- 理解HTTP幂等性
- linux性能监控以及网络命令