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


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

    • 定义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];
 
 

OC - 18.监听iPhone的网络状态的更多相关文章

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

    使用系统的方法来监听网络状态 系统的方法是通过通知机制来实现网络状态的监听 实现网络状态监听的步骤 定义Reachability类型的成员变量来保存网络的状态 @property (nonatomic ...

  2. linux配置oracle11G监听及本地网络服务 及 数据库建库

    配置监听及本地网络服务 在oracle用户的图形界面oracle用户中,新开启一个终端,输入命令netca 会弹出如下界面. 数据库建库 在oracle用户的图形界面oracle用户中,新开启一个终端 ...

  3. 监听Listview的滚动状态,是否滚动到了顶部或底部

    /** * @author:Jack Tony * @description : 监听listview的滑动状态,如果到了顶部就刷新数据 * @date :2015年2月9日 */ private c ...

  4. Oracle Net Configuration(监听程序和网络服务配置)

    1.在Oracle服务端和客户端都安装完之后,就需要配置监听程序和本地网络服务,以便外部程序和工具的访问,所以Oracle提供了两款自带的工具来配置它们分别是 Net Configuration.Ne ...

  5. iOS 实时监听app的网络连接状态

    实际iOS开发中,在网络通信中我们大部分使用第三方(只谈短链),譬如 AFNetworking.ASIHttpRequest(这个停更了,想必现在没多少人用),swift的 Alamofire 等. ...

  6. Fiddler-3 配置Fiddler监听iphone的http/https请求

    电脑端可以通过Fiddler监听手机端的http请求.需要两个步骤:首先配置Fiddler,再配置手机端. 1 配置 Fiddler 允许远程设备连接: 菜单Tools - Telerik Fiddl ...

  7. 监听TelephonyManager的通话状态来监听手机的所有的来电

    import java.io.FileNotFoundException;import java.io.OutputStream;import java.io.PrintStream;import j ...

  8. Android 监听手机GPS打开状态

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/70854942 本文出自[赵彦军的博客] GPS_Presenter package ...

  9. kali linux: 网卡监听及扫描网络

    一.网卡监听: kali不支持内置网卡,仅仅支持usb网卡.我用的虚拟机.首先在虚拟机的可移动设备里打开usb网卡的连接,执行ifconfig命令,如下: eth0接口是本地有线网卡信息,lo接口是本 ...

随机推荐

  1. MySqlCommand, MySqlParameter and "LIKE" with Percent Symbol

    //Wrong way MySqlCommand cmd = oldDb.GetSqlStringCommand(CommandType.Text,"SELECT * _ FROM user ...

  2. struts2错误:The Struts dispatcher cannot be found.

    struts2错误:The Struts dispatcher cannot be found. The Struts dispatcher cannot be found. This is usua ...

  3. 获取和设置select和checkbox的值

    if ($("input[name = 'recpower']").prop("checked") == true) //获取checkbox值 { data. ...

  4. sublime中文乱码解决办法

    欲解决问题,关键在于让Sublime Text 2支持GB2312和GBK.步骤如下: 1.安装Sublime Package Control. 在Sublime Text 2上用Ctrl+-打开控制 ...

  5. Android TextView : “Do not concatenate text displayed with setText”

    参考:http://stackoverflow.com/questions/33164886/android-textview-do-not-concatenate-text-displayed-wi ...

  6. struts1与strut2的区别

    struts1和struts2是两个完全不同的框架 struts1工作流程:发布Struts Web服务时,根据web.xml初始化ActionServlet,ActionContext等内容.在接到 ...

  7. jQuery之前端国际化jQuery.i18n.properties

    jQuery.i18n.properties是一款轻量级的jQuery国际化插件,能实现Web前端的国际化. 国际化英文单词为:Internationalization,又称i18n,"i& ...

  8. LINUX下mysql的大小写是否区分设置 转

    一.Linux中MySQL大小写详情:1.数据库名严格区分大小写2.表名严格区分大小写的3.表的别名严格区分大小写4.变量名严格区分大小写5.列名在所有的情况下均忽略大小写6.列的别名在所有的情况下均 ...

  9. Android开发——新特性与知识点回顾

    Fragment 用途:在一个Activity里切换界面,切换界面时只切换Fragment里面的内容 生命周期方法跟Activity一致,可以理解把其为就是一个Activity 定义布局文件作为Fra ...

  10. windows2012 IIS8.5 不能在此路径中使用此配置节

    IIS 8.5 不能在此路径中使用此配置节.如果在父级别上锁定了该节,便会出现这种情况.锁定是默认设置的(overrideModeDefault="Deny"),或者是通过包含 o ...