1:我们项目中经常会用到获取用户当前的网络状态,是否有网,是否是wifi情况下
准备工作
1:从苹果官网上下载Reachability.zip,并且解压,这个类是苹果提供给我们,用于检测网络状态,下载解压好,拖拽到我们项目中
2:添加框架:SystemConfiguration.framework
开始编写代码
1:导入Reachability.h头文件
2:写一个属性@property(nonatomic,strong)Reachability* reach;
3:
//添加监听,当网络发生变化的时候,会发出通知,我们只需要监听就行(不要忘了移除监听)
-(void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (void)viewDidLoad {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(reachabilityChanged:)
name: kReachabilityChangedNotification
object: nil];
self.reach = [Reachability reachabilityWithHostName:@"www.baidu.com"];
[self.reach startNotifier]; //开始监听,会启动一个run loop
}
//实现方法,可以根据不同的状态来做想做的操作
- (void)reachabilityChanged: (NSNotification*)note
{
Reachability*curReach = [note object];
NSParameterAssert([curReach isKindOfClass:[Reachability class]]);
NetworkStatus status=[curReach currentReachabilityStatus];
switch (status) {
case ReachableViaWiFi:
case kReachableVia4G:
case kReachableVia2G:
case kReachableVia3G:
case NotReachable:
break;
default:
break;
}
}
4:判断当前网络状态
NSString *netconnType = NULL;
Reachability* reach = [Reachability reachabilityWithHostName:@"www.baidu.com"];
switch ([reach currentReachabilityStatus]) {
case NotReachable:
netconnType = @"NotReachable";
break;
case ReachableViaWiFi:
netconnType = @"WIFI";
break;
case ReachableViaWWAN:
netconnType = @"WWAN";
break;
case kReachableVia2G:
netconnType = @"2G";
break;
case kReachableVia3G:
netconnType = @"3G";
break;
case kReachableVia4G:
netconnType = @"4G";
break;
case kReachableViaOther:
netconnType = @"OTHER";
break;
default:
netconnType = NULL;
break;
}
return netconnType;