利用Reachability实现网络状态监听

荒凉一梦 提交于 2020-02-05 03:07:42

时刻检查设备的联网状态,并作出相应的处理,基本上是所有的联网程序需要考虑的问题,以前自己写个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~~

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!