码迷,mamicode.com
首页 > 移动开发 > 详细

iOS网络-06-监听Iphone的网络状态

时间:2015-07-29 17:17:28      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:ios   网络   

使用系统的方法来监听网络状态


  • 系统的方法是通过通知机制来实现网络状态的监听
  • 实现网络状态监听的步骤

    • 定义Reachability类型的成员变量来保存网络的状态
    @property (nonatomic, strong) Reachability *reachability;
    • 注册为通知中心的的观察者
    // 在通知中心注册观察者
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getNetworkStatus) name:kReachabilityChangedNotification object:nil];
    /**
    * getNetworkStatus:监听到通知的回调方法
    * kReachabilityChangedNotification:通知的类型,即网络状态发生改变时,触发通知
    * object:传递给getNetworkStatus回调方法的参数
    */
    // 获取并保存网络状态
    self.reachability = [Reachability reachabilityForInternetConnection];
    // 开始监听
    [self.reachability startNotifier];
    • 在监听到通知的触发方法中判断网络的状态
    - (void)getNetworkStatus
    {
        if ([Reachability reachabilityForLocalWiFi].currentReachabilityStatus != NotReachable)
        {
            NSLog(@"是WIFI");
        }
        else if ([Reachability reachabilityForInternetConnection].currentReachabilityStatus != NotReachable)
        {
            NSLog(@"是手机自带网络");
        }
        else
        {
            NSLog(@"网络有问题");
        }
    }
    • 将观察者从通知中心移除,停止监听,清空网络监听对象
    - (void)dealloc
    {
        [[NSNotificationCenter defaultCenter] removeObserver:self];
        [self.reachability stopNotifier];
        self.reachability = nil;
    }

使用AFNetworking监听网络状态


  • 通过AFN监听网络状态比较简单
  • 实现网络状态监听的

    • 获取AFNetworkReachabilityManager的实例
    AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
    • 设置manager在网络发生变化的时回调的Block
    [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
        NSLog(@"----当前网络状态---%zd", status);
    }];
    /**
    * status:表示当前网络的状态,是个枚举类型变量,具有以下取值
    *       AFNetworkReachabilityStatusUnknown = -1
    *       AFNetworkReachabilityStatusNotReachable = 0
    *       AFNetworkReachabilityStatusReachableViaWWAN = 1
    *       AFNetworkReachabilityStatusReachableViaWiFi = 2
    */
    • 开始监听
    [manager startMonitoring];

    本博客的最新状态将会同步到新浪微博账号:世俗孤岛

版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS网络-06-监听Iphone的网络状态

标签:ios   网络   

原文地址:http://blog.csdn.net/qq_26583311/article/details/47129961

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!