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];
    
}
原文地址:https://www.cnblogs.com/zanglitao/p/4082339.html