zoukankan      html  css  js  c++  java
  • 网络状态监测

    IOS开发过程中网络状态的监测
    (1) 苹果自带的Reachability
    注意:Build Phases 中的 Compile Sources中Reachability.m设置
    设置
    核心代码:

    @property (nonatomic, strong) Reachability *reach;
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        //发送状态改变的通知
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkStatusChanged) name:kReachabilityChangedNotification object:nil];
    
        //获取Reachability对象
        _reach = [Reachability reachabilityForInternetConnection];
    
        //开始监听网络
        [self.reach startNotifier];   
    }
    - (void)dealloc{
        [self.reach stopNotifier];
        [[NSNotificationCenter defaultCenter] removeObserver:self];
    }
    
    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
        [self checkNetworkState];
    }
    
    - (void)networkStatusChanged{
        NSLog(@"网络状态改变");   
        [self checkNetworkState];
    }
    
    /** 监听网络改变 */
    - (void)checkNetworkState{
        if ([self isWifi]){
            NSLog(@"WIFI");
        }else if([self isWan]){
            NSLog(@"WAN");
        }else{
            NSLog(@"无网络连接");
        }
    }
    /** 判断是否为wifi */
    - (BOOL)isWifi{
        Reachability *wifi = [Reachability reachabilityForLocalWiFi];
        //获取当前的状态
        NetworkStatus wifiStatus = wifi.currentReachabilityStatus;
    
        if (wifiStatus != NotReachable) {
            return YES;
        }else{
            return NO;
        }
    }
    
    /** 判断是否为WAN */
    - (BOOL)isWan{
        Reachability *wan = [Reachability reachabilityForInternetConnection];
        NetworkStatus wanStatus = wan.currentReachabilityStatus;
        if (wanStatus != NotReachable) {
            return YES;
        }else{
            return NO;
        }
    }

    2 用 AFNetworking 框架中的 AFNetworkReachabilityManager 实现网络状态监听:

    @property (nonatomic, strong) AFNetworkReachabilityManager *mgr;
    
    - (void)afnStatus{
        self.mgr = [AFNetworkReachabilityManager manager];
        [self.mgr setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
            switch (status) {
                case AFNetworkReachabilityStatusUnknown:
                    NSLog(@"未知原因");
                    break;
                case AFNetworkReachabilityStatusNotReachable:
                    NSLog(@"无网络连接");
                    break;
                case AFNetworkReachabilityStatusReachableViaWiFi:
                    NSLog(@"WIFI");
                    break;
                case AFNetworkReachabilityStatusReachableViaWWAN:
                    NSLog(@"WAN");
                    break;
                default:
                    break;
            }
        }];
        [self.mgr startMonitoring];
    }
    
    - (void)dealloc{
        [self.mgr stopMonitoring];
    }
  • 相关阅读:
    最近我总结的常用mate标签-常用mate标签
    同一个世界(erlang解题答案)
    ranch 源码分析(完)
    ranch 源码分析(三)
    ranch 源码分析(二)
    ranch 源码分析(一)
    port 执行命令的封装和参数详解
    erlang 笔记(06/03/02)
    recon工具解读
    erlang调试方法
  • 原文地址:https://www.cnblogs.com/xiaocai-ios/p/7779767.html
Copyright © 2011-2022 走看看