• OC


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


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

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

         

     
     
  • 相关阅读:
    global mapper合并多个tif影像
    arcgis 10.2 licence manager无法启动
    Error C2079 'CMFCPropertySheet::m_wndOutlookBar' uses undefined class 'CMFCOutlookBar'
    家里的技嘉B360主板win10 uefi系统安装
    vc 6.0项目转为vs 2017项目遇到 的问题
    PPT学习笔记
    git拉取分支
    将本地源码推向gitee码云
    java反编译工具使用记录
    node.js install and cecium apply
  • 原文地址:https://www.cnblogs.com/funny11/p/4948996.html
Copyright © 2020-2023  润新知