通过RealReachability实现当前网络的监测

Posted goodmorningmr

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过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];

以上是关于通过RealReachability实现当前网络的监测的主要内容,如果未能解决你的问题,请参考以下文章

iOS下的实际网络连接状态检测:RealReachability

Xcode9和iOS 11遇到的一些问题

通过VIOS实现AIX系统的网络虚拟化

获取与网络连接的 IP 地址的当前用户名

SDN

图像识别基于卷积神经网络(CNN)实现垃圾分类Matlab源码