iOS网络监测如何区分2、3、4G(Reachability)
首先,引入系统的Reachability类,不知道怎么引入的话,在Xcode,按下shift+command+0,搜索Reachability,看到图中所选的工程下载即可。
Apple Reachability
网络监测
并导入相关.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里加入
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;}
转自:http://www.jianshu.com/p/efcfa3c87306
iOS网络监测如何区分2、3、4G(Reachability)相关推荐
- 如何区分2G/3G/4G基站
如何根据一个基站的lac和cellid区分这个基站是2G,3G还是4G基站,这里做一下总结. 国内运营商在建网初期就对LAC代码按省进行了分配,每个省/自治区/直辖市都分配到了一定数量的LAC代码区间 ...
- ionic2 中的网络监测功能
参考:http://ionicframework.com/docs/v2/native/network/ (后须还将发表其他我正在ionic2使用的插件或功能) 增加网络监测功能的cordova插件: ...
- 使用eBPF 技术进行四层网络监测
互联网的本质就是一系列的网络协议,按照功能不同,分工不同,其常被分为七层.五层.四层网络结构.七层,五层.四层的概念,只是人为的划分而已,是为了区分出哪一层是干什么用的. 今天咱们主要讲"四 ...
- iOS网络高级编程:iPhone和iPad的企业应用开发之错误处理
本章内容 ● iOS应用中的网络错误源 ● 检测网络的可达性 ● 错误处理的经验法则 ● 处理网络错误的设计模式 到目前为止,我们所介绍的iPhone与其他系统的网络交互都是基 ...
- iOS网络缓存扫盲篇--使用两行代码就能完成80%的缓存需求
原文地址:https://github.com/ChenYilong/ParseSourceCodeStudy/blob/master/02_Parse的网络缓存与离线存储/iOS网络缓存扫盲篇.md ...
- iOS网络编程-iCloud键值数据存储编程实例
iCloud键值数据存储设计 iCloud键值数据存储编程实例,画面中有两个开关控件,左图是设备1点击"设置iCloud数据"按钮,将控件状态保存到iCloud服务器.右图是设备2 ...
- iOS网络开发中的同步、异步和请求队列
在iOS网络编程中,我们经常会遇到线程的同步和异步问题,同时为了对异步请求更加精准丰富的控制,我们还常常在iOS中使用请求队列,下面就来谈谈iOS开发中同步.异步以及请求队列的使用方法. 1. 同步意 ...
- [深入浅出Cocoa]iOS网络编程之Socket
一,iOS网络编程层次模型 在前文<深入浅出Cocoa之Bonjour网络编程>中我介绍了如何在Mac系统下进行 Bonjour 编程,在那篇文章中也介绍过 Cocoa 中网络编程层次结构 ...
- iOS网络编程开发—HTTP协议
iOS网络编程开发-HTTP协议 说明:apache tomcat服务器必须占用8080端口 一.URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) ...
最新文章
- ajax的loading方法,Ajax加载中显示loading的方法
- cap mysql_.NetCore关于Cap(RabbitMQ)结合MySql使用出现MySql相关类冲突问题解决办法
- 10个性鼠标指针主题包_每个人都应该知道的十大电脑鼠标使用技巧,别说你不知道...
- uni-app手机横屏后界面错乱解决办法
- redis同步效率秒_redis过期策略、内存淘汰策略、持久化方式、主从复制
- C语言实例第2期:判断某一年是否为闰年
- Java基础之集合归总
- 函数计算帮助石墨文档突破性能瓶颈,有效节省服务器成本
- Java各种数据类型的转换
- 讲讲金融业务(一)--自助结算终端POS
- Eclipse插件安装之,使用(已经下载的zip)安装包直接安装插件(例:glassfish 插件 plugin)
- [MySQL]SQL优化工具SQLAdvisor
- wps office 2019中文版
- webservice的几种调用方式
- 0到1认识计算机:通俗讲解计算机工作原理
- 以太坊地址和公钥_《每日一课》第九课:什么是钱包、钱包地址、私钥、公钥?...
- [Hadoop in China 2011] 人人网:基于Hadoop的SNS统计和聚类推荐
- 可惜知乎没有注销账号的选项
- 右上角的引用文献格式_论文要引用的小符号右上角怎么打?
- Tensorflow中的多层感知器学习