大部分的应用都与网络有关 如果你没有网络监测 来监测是否连接网络 很容易让背锅
用法也特别的简单 按照我下面的 二部曲 包你轻松过
1.第一部曲—导入
Reachability类:
这个类用于检测当前网络状态,它不是SDK的一部分,可以在iOS Developer Library里找到这份代码。
从苹果网站上下载Reachability.zip文件,解压之。 (1)把Reachability.h和Reachability.m文件拖到项目中。
(2)添加框架:SystemConfiguration.framework。
( 3 ) 运行环境非 ARC 需要修改 “-fno-objc-arc” (复制就行)
2.第二部曲 –使用方法
1>静态
网络环境现在分三种
①WIFI
②2G/3G/4G
③无网络
所以 Reachability 监测也是分三种
①WIFI reachabilityForLocalWiFi
②2G/3G/4G reachabilityForInternetConnection
③无网络 NotReachable
- (void)checkNetworkState
{
// 1.检测wifi状态
Reachability *wifi = [Reachability reachabilityForLocalWiFi];
// 2.检测手机是否能上网络(WIFI\3G\2.5G)
Reachability *conn = [Reachability reachabilityForInternetConnection];
// 3.判断网络状态
if ([wifi currentReachabilityStatus] != NotReachable) { // 有wifi
NSLog(@"有wifi");
} else if ([conn currentReachabilityStatus] != NotReachable) { // 没有使用wifi, 使用手机自带网络进行上网
NSLog(@"使用手机自带网络进行上网");
} else { // 没有网络
NSLog(@"没有网络");
}
}
2>实时
实时的监控几行代码就可以了
原理就是用通知 调用它自身一个网络状态变化的信息方法
- (void)viewDidLoad
{
[super viewDidLoad];
//监听通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkStateChange) name:kReachabilityChangedNotification object:nil];
//发布通知 这个地方的对象必须是全局的对象
self.conn = [Reachability reachabilityForInternetConnection];
//开启通知
[self.conn startNotifier];
}
- (void)dealloc
{
[self.conn stopNotifier];
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (void)networkStateChange
{
[self checkNetworkState];
}
- (void)checkNetworkState
{
// 1.检测wifi状态
Reachability *wifi = [Reachability reachabilityForLocalWiFi];
// 2.检测手机是否能上网络(WIFI\3G\2.5G)
Reachability *conn = [Reachability reachabilityForInternetConnection];
// 3.判断网络状态
if ([wifi currentReachabilityStatus] != NotReachable) { // 有wifi
NSLog(@"有wifi");
} else if ([conn currentReachabilityStatus] != NotReachable) { // 没有使用wifi, 使用手机自带网络进行上网
NSLog(@"使用手机自带网络进行上网");
} else { // 没有网络
NSLog(@"没有网络");
}
}
就上面这两部就够了
静态和实时 我肯定是推荐实时的
你可以写在 APPDelegate 里面 也可以写在任何地方 但是注意 如果写在 app 里面 dealloc 似乎是不需要写的 请自行测试