你可以在Github下载这个Demo

首先,引入系统的Reachability类,不知道怎么引入的话,在Xcode,按下shift+command+0,搜索Reachability,看到图中所选的工程下载即可。

Reachability.png

并导入相关.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;
}
}

最新文章

  1. HYSBZ 2957 分块
  2. 《Visual C++并行编程实战》译者序
  3. MFC基本框架
  4. js算法
  5. Java Web整合开发(78) -- Struts 1
  6. Android Studio设置代理更新下载SDK
  7. idea右键无法生成javaclass
  8. 8分钟学会使用AutoMapper
  9. Vue2.0选中当前鼠标移入移除加样式
  10. 锦囊9-if语句
  11. keepalived的vip无法ping通【原创】
  12. 利用shell简单监控网络设备的接口状态发出告警
  13. 【原创】大数据基础之Flume(2)kudu sink
  14. I2S音频总线学习
  15. 第三个Sprint冲刺第3天
  16. 异常:分为 严重性错误:Error 异常:Exception
  17. SPring cloud (3)A Ribbon 负载均衡 配置初步
  18. Hadoop的HDFS和MapReduce的安装(三台伪分布式集群)
  19. 03 Go 1.3 Release Notes
  20. Netdata Linux下性能实时监测工具

热门文章

  1. html5 canvas 鼠标绘制
  2. 转】mysql数据库delete数据时不支持表别名
  3. Hadoop Java开发实用快捷键收藏
  4. Dell商用台式机、笔记本、服务器800电话
  5. android进度条的使用
  6. logstash开源日志收集查询分析系统
  7. OpenCV中cvWaitKey()函数注意事项
  8. ASP.NET 最佳DataGrid读取单元格的值
  9. Objective-C运行时编程 - 实现自动化description方法的思路及代码示例
  10. NameThreadForDebugging -- Naming threads for debugging