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];
    
  • 相关阅读:
    Java笔记(2)
    java笔记(1) java环境
    黑马javaSE内部编程题10道
    Openblas编译Android NDK库的步骤
    Android layout的横竖屏处理
    会议整理
    概率论总结
    数据分析推荐书籍
    操作系统(蒲晓蓉)7
    运筹学整理笔记1
  • 原文地址:https://www.cnblogs.com/GoodmorningMr/p/9604812.html
Copyright © 2011-2022 走看看