zoukankan      html  css  js  c++  java
  • 通过RealReachability实现当前网络的监测

    在一些消耗流量较大的应用中我们需要对当前的网络状态进行实时监测,根据用户的网络状态进行智能处理业务中的一些数据交换,节省用户流量,提高用户体验;使用户了解自己当前的网络状态,以免无辜背锅

    方法一:RealReachability

    RealReachability引入了ping能力(此方案流量开销最小,也最简单),实现了简单的实际网络连接监测。

    在实际的项目中,我将RealReachability封装到了一个工具类中,代码如下

    -(void)listenNetWorkingStatus{
        GLobalRealReachability.hostForPing = @"www.baidu.com";
        GLobalRealReachability.autoCheckInterval = 5.0f;
    
        [GLobalRealReachability startNotifier];
        [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(networkChanged:)
                                                     name:kRealReachabilityChangedNotification
                                                   object:nil];
        ReachabilityStatus status = [GLobalRealReachability currentReachabilityStatus];
        [self realNetworkingStatus:status];
    }
    
    - (void)networkChanged:(NSNotification *)notification
    {
        RealReachability *reachability = (RealReachability *)notification.object;
        ReachabilityStatus status = [reachability currentReachabilityStatus];
        [self realNetworkingStatus:status];
    }
    
    -(void)realNetworkingStatus:(ReachabilityStatus)status{
        switch (status)
        {
                case RealStatusUnknown:
            {
                NSLog(@"~~~~~~~~~~~~~RealStatusUnknown");
                self.netStatus = NetStatusUnknown;
                break;
            }
                
                case RealStatusNotReachable:
            {
                NSLog(@"~~~~~~~~~~~~~RealStatusNotReachable");
                self.netStatus = NetStatusNotReachable;
                break;
            }
                
                case RealStatusViaWWAN:
            {
                NSLog(@"~~~~~~~~~~~~~RealStatusViaWWAN");
                self.netStatus = NetStatusViaWWAN;
                break;
            }
                case RealStatusViaWiFi:
            {
                NSLog(@"~~~~~~~~~~~~~RealStatusViaWiFi");
                self.netStatus = NetStatusViaWiFi;
                break;
            }
            default:
                break;
        }
    }
    

    外部调用下面方法后即可完成网络的监测功能

    [[NetChackManager shareManager] listenNetWorkingStatus];
    
  • 相关阅读:
    从boosting谈起
    《人月神话》读书摘记
    Python中input()的使用方法
    Web前端攻击方式及防御措施
    吞吐量(TPS)、QPS、并发数、响应时间(RT)概念
    Mybatis的Mapper文件sql语句中使用常量值或者枚举常量值
    Java依据文件头获取文件类型
    MySQL查询优化
    RabbitMQ学习教程
    SpringBoot2.x.x + Shiro + Redis 前后端分离实现
  • 原文地址:https://www.cnblogs.com/GoodmorningMr/p/9604812.html
Copyright © 2011-2022 走看看