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


  • 系统的方法是通过通知机制来实现网络状态的监听
  • 实现网络状态监听的步骤
    • 定义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];

最新文章

  1. C# DllImport用法和路径问题
  2. SQL Server调优系列进阶篇(深入剖析统计信息)
  3. 定时器的应用---查询方式---让8个LED灯,左右各4个来回亮
  4. iOS 没有安装对应客户端,不应显示对应的图标
  5. MyCat 学习笔记 第十二篇.数据分片 之 分片事务处理
  6. 一篇文章教你读懂Makefile
  7. Hadoop namenode无法启动问题解决
  8. 【iOS】iOS之Button segue弹出popOver消除(dismiss)问题
  9. linux下的type命令
  10. Software Development and Newton's Laws of Motion
  11. Nyoj Fire Station
  12. twemproxy代理主干流程——剖析twemproxy代码正编
  13. 初识Redis系列之四:.net使用Redis存储数据
  14. 菜鸟玩云计算之十五:在Ubuntu上创建和管理Redhat虚拟机
  15. linux的link命令
  16. Ng1从1.3开始的变更史
  17. P1140 相似基因 (dp)
  18. HBuilderx中编译sass文件
  19. Zabbix监控nginx性能的另外一种方式
  20. Observer(__ob__: Observer) 对象添加属性

热门文章

  1. HTML的学习
  2. ASP.NET MVC 快速开发框架之 SqlSugar+SyntacticSugar+JQWidgetsSugar+jqwidgets
  3. C#语法糖之Cookies操作类 asp.net
  4. UWP开发入门(十八)——使用ContentControl减少页面元素数量
  5. SQL实现分组查询取前几条记录
  6. Sprint回顾-0525
  7. EF容器---代理类对象
  8. C#设计模式——适配器模式(Adapter Pattern)
  9. C#的注释和快速开启工具的命令
  10. C# 修改电脑DNS和IP方法