iOS 检测网络状态
1.为什么要检测网络状态?
1.1 让用户知道自己的网络状态,防止用户埋怨"这个应用太垃圾,获取数据那么慢"
1.2 根据用户的网络状态,智能处理,提升用户体验
例如某些手机浏览器,检测到用户网络是2G/3G时,会自动切换为无图模式
2.手动触发
2.1 首先下载苹果的示例程序Reachability, 取得示例程序里的Reachability.h和Reachability.m, 添加到自己项目里
代码如下
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
// 检测WIFI状态
Reachability *WIFI = [Reachability reachabilityForLocalWiFi];
// 检测手机联网状态(2G/3G/WIFI)
Reachability *conn = [Reachability reachabilityForInternetConnection];
if ([WIFI currentReachabilityStatus] != NotReachable) { //有WIFI
NSLog(@"当前连着WIFI");
}else{ //无WIFI
if ([conn currentReachabilityStatus] != NotReachable) { //有2G/3G网络
NSLog(@"当前连着2G/3G网络");
}else{ //无2G/3G网络
NSLog(@"当前没联网");
}
}
}
2.2 实际应用中,不会让用户手动去检测网络状态,下面用通知实现实时检测网络状态
@property (nonatomic,strong) Reachability *coon;
// 添加通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkChange) name:kReachabilityChangedNotification object:nil];
self.coon = [Reachability reachabilityForInternetConnection];
// 发送通知
[self.coon startNotifier];
- (void)dealloc
{
[self.coon stopNotifier];
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (void)networkChange
{
[self checkNetworkState];
}
- (void)checkNetworkState
{
Reachability *WIFI = [Reachability reachabilityForLocalWiFi];
Reachability *conn = [Reachability reachabilityForInternetConnection];
if ([WIFI currentReachabilityStatus] != NotReachable) { //有WIFI
NSLog(@"当前连着WIFI");
}else{ //无WIFI
if ([conn currentReachabilityStatus] != NotReachable) { //有2G/3G网络
NSLog(@"当前连着2G/3G网络");
}else{ //无2G/3G网络
NSLog(@"当前没联网");
}
}
}
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。