iOS 网络状态监听和检查,

℡╲_俬逩灬. 提交于 2020-02-05 02:30:53

实现网络状态监听和监察网络状态,注意下面介绍两种方法都需要使用到第三方文件Reachability.h,和Reachability.m,这两个文件可以再第三方库ASIHttpRequest中得到,使用前引入头文件即可:

#import "Reachability.h"

1.实时监听,这个方法下会启动一个Run loop 实时监听网络的状态。注意这里将hostReach声明为一个全局的变量。

//开启网络状况的监听

-(void)giveNetNotification{

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name: kReachabilityChangedNotification object: nil];

    hostReach = [Reachability reachabilityWithHostName:@"www.baidu.com"];//可以以多种形式初始化

    [hostReach startNotifier];  //开始监听,会启动一个run loop

    [self updateInterfaceWithReachability: hostReach];

}

//监听到网络状态改变

- (void) reachabilityChanged: (NSNotification* )note{

    Reachability* curReach = [note object];

    NSParameterAssert([curReach isKindOfClass: [Reachability class]]);

    [self updateInterfaceWithReachability: curReach];

}

//处理连接改变后的情况

- (void) updateInterfaceWithReachability: (Reachability*) curReach{

    //对连接改变做出响应的处理动作。

    NetworkStatus status = [curReach currentReachabilityStatus];

    if(status == ReachableViaWWAN){

        printf("\n3g/2G\n");

    } else if(status == ReachableViaWiFi){

        printf("\nwifi\n");

    }else {

        printf("\n无网络\n");

    }

}

2.进行一次网络状态检查,这个方法不会时时触发,适用于检查连接到指定网络的状态;

-(void)netStatusNotification{

    if (([Reachability reachabilityForInternetConnection].currentReachabilityStatus==NotReachable)||([Reachability reachabilityForLocalWiFi].currentReachabilityStatus==NotReachable)){

        UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"警告" message:@"您的设备暂时没有可用的网络,不能进行智能检点操作!" delegate:self cancelButtonTitle:@"确定" otherButtonTitles: nil];

        [alert show];

    }

}

 

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