zoukankan      html  css  js  c++  java
  • 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];
        
  • 相关阅读:
    分析Ajax并爬取微博列表
    链表01
    Install ping command from ubuntu docker
    In container,I can't use man
    centos install glances
    centos 服务器命令下安装GUI
    firefox浏览器配置
    xshell替代产品
    Linux下将一个文件压缩分包成多个小文件
    Linux生成大文件
  • 原文地址:https://www.cnblogs.com/theDesertIslandOutOfTheWorld/p/4756457.html
Copyright © 2011-2022 走看看