利用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~~

posted @ 2013-04-24 10:42  SuperHappy  阅读(1412)  评论(0编辑  收藏  举报