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];
    
  • 相关阅读:
    荔枝微课基础架构的演进与实践
    如何制作出让女朋友满意的大片
    SSL 证书变革之时已至,这些变化你都清楚吗?
    浅谈 FTP、FTPS 与 SFTP
    HTTP/3 来了,你了解它么?
    看视频常见的 720p、1080p、4k,这些分辨率到底包含了什么
    element-ui表单验证遇到v-if时不生效
    声纹识别算法阅读之CN-Celeb
    apply-cmvn&apply-cmvn-online&apply-cmvn-slide
    语音识别算法阅读之TDNN-F
  • 原文地址:https://www.cnblogs.com/GoodmorningMr/p/9604812.html
Copyright © 2011-2022 走看看