首页 > 代码库 > IOS网络访问之获取网络状态

IOS网络访问之获取网络状态

苹果设备的网络状况多变,既可能有网,也可能网络断开,既可能通过wifi联网,也可能通过蜂窝数据联网,很多时候我们需要获知程序当前运行在何种网络状况下

我们可以在苹果官方下载工具类Reachability,解压后将Reachability.h和Reachability.m添加到我们的项目中

示例1:查看当前的网络环境(通过访问一个页面测试网络状况)

Reachability *reach = [Reachability reachabilityWithHostName:@"http://www.cnblogs.com/zanglitao/"];        switch([reach currentReachabilityStatus]) {        case NotReachable:        NSLog(@"无法访问");        break;                case ReachableViaWiFi:        NSLog(@"使用wifi");                case ReachableViaWWAN:        NSLog(@"使用蜂窝数据");    }

 

示例2:测试手机是否连接wifi(或者蜂窝)

if([[Reachability reachabilityForLocalWiFi] currentReachabilityStatus] != NotReachable) {        NSLog(@"wifi网络可用");    }    if([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] != NotReachable) {        NSLog(@"蜂窝网络可用");    }

 

 

示例3:监听网络变化

我们通过Reachability对象的startNotifier方法开启通知,当网络变化时Reachability会发出kReachabilityChangedNotification的通知给默认的通知中心

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(netStatusChange:) name:kReachabilityChangedNotification object:nil];    Reachability *reach = [Reachability reachabilityWithHostName:@"http://www.cnblogs.com/zanglitao/"];    [reach startNotifier];//[reach stopNotifier];        return YES;}- (void)netStatusChange:(NSNotification *)note {    Reachability *reach = [note object];    //获取当前网络状态    NetworkStatus *status = [reach currentReachabilityStatus];    }

 

IOS网络访问之获取网络状态