使用Reachability类检测网络状态

首先去
https://developer.apple.com/library/ios/samplecode/Reachability/Listings/Reachability_Reachability_m.html 下载Reachability类。

然后将Reachability.h和Reachability.m拖进你的工程,然后添加SystemConfiguration.framework框架。
注:Reachability 2.x版本是不支持ARC的,如果你用的是2.x的版本,请手动禁用该类的ARC。TARGETS->Build Phases->Compile Sources双击Reachability.m,输入框添加“-fno-objc-arc”。

然后判断网络状态方法如下:

    NSString *site = @"www.MyWeb.com";
    Reachability *reach = [Reachability reachabilityWithHostName:site];
    
    switch ([reach currentReachabilityStatus]) {
        case NotReachable:
            NSLog(@"不能访问%@", site);
            break;
        case ReachableViaWiFi:
            NSLog(@"使用wifi访问%@", site);
            break;
        case ReachableViaWWAN:
            NSLog(@"使用3G/4G访问%@", site);
            break;
        default:
            break;
    }

判断有无网络连接:

    if ([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] != NotReachable) {
        [self showAlert:@"网络可用"];
    } else {
        [self showAlert:@"网络不可用"];
    }

监听网络状态的方法,写在AppDelegate类的application: didFinishLaunchingWithOptions:里面:
注册通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];
Reachability *reachability = [Reachability reachabilityWithHostName:@"www.baidu.com"];
[reachability startNotifier];

网络状态变化实现

/**
 *此函数通过判断联网方式,通知给用户
 */
- (void)reachabilityChanged:(NSNotification *)notification {
    Reachability *curReachability = [notification object];
    NSParameterAssert([curReachability isKindOfClass:[Reachability class]]);
    NetworkStatus curStatus = [curReachability currentReachabilityStatus];
    switch (curStatus) {
        case NotReachable:
            NSLog(@"无网络");
            break;
        case ReachableViaWiFi:
            NSLog(@"使用wifi网络");
            break;
        case ReachableViaWWAN:
            NSLog(@"使用3G/4G网络");
            break;
            
        default:
            break;
    }
}

最后新版本中reachabilityForLocalWiFi方法被移除了


Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,250评论 4 61
  • AFHTTPRequestOperationManager 网络传输协议UDP、TCP、Http、Socket、X...
    Carden阅读 4,394评论 0 12
  • 平时,我们大部分人估计都是用的AF自带的检测网络状态类来判断当前手机网络状态,其实苹果原生的检测网络状态的类用着也...
    Frey丶阅读 1,080评论 0 2
  • hadoop是处理大数据的得力帮手,它主要分为三种模式: 单机模式;伪分布式模式;完全分布式模式; 在这篇文章中,...
    七号萝卜阅读 1,451评论 3 6
  • 在板瓦工买了个 512M 内存的 VPS ,平时用来 想着不是太浪费了吗,就搭建各种环境做测试. 网上已经有很多教...
    唐古拉老山羊阅读 613评论 0 1