利用Reachability实现网络状态监听
时刻检查设备的联网状态,并作出相应的处理,基本上是所有的联网程序需要考虑的问题,以前自己写个NSTimer 每多少卖哦循环一次,后来觉得这个思维有些不爽,就直接用Reachability来实现了
首先考虑要在每一个类都能用这个网络的判定结果,可以用一个单例写,怕麻烦的话 直接写在 AppDelegate也行。
.h的操作
@property (strong,nonatomic)Reachability *reachiability;
@property (assign,nonatomic)BOOL isReachable;//是否可用
@property (assign,nonatomic)NetworkStatus status;//判定状态用的
.m里
//开启网络状况的监听
[[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(reachabilityChanged:) name:kReachabilityChangedNotificationobject:nil];
self.reachiability = [ReachabilityreachabilityWithHostname:@"www.baidu.com"];
[self.reachiability startNotifier]; //开始监听,会启动一个run loop
OK 剩下的就是实现reachabilityChanged:这个带有参数的方法了
//网络链接改变时会调用的方法
-(void)reachabilityChanged:(NSNotification *)note
{
Reachability *currReach = [note object];
NSParameterAssert([currReach isKindOfClass:[Reachability class]]);
//对连接改变做出响应处理动作
self.status = [currReach currentReachabilityStatus];
//如果没有连接到网络就弹出提醒实况
self.isReachable = YES;
switch (self.status) {
case NotReachable:
{
//各种操作
self.isReachable = NO;
}
break;
caseReachableViaWiFi:
{
//各种操作
self.isReachable = YES;
}
break;
caseReachableViaWWAN:
{
//各种操作
self.isReachable = YES;
}
break;
default:
break;
}
}
在其他类里就可以用了~ 想判断是否有网络可以用 isReachable 想判断是什么网络可以用status~~