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

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


  • 系统的方法是通过通知机制来实现网络状态的监听
  • 实现网络状态监听的步骤
    • 定义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];
      
posted @ 2015-08-25 08:34  世俗孤岛  阅读(956)  评论(0编辑  收藏  举报