美文网首页
iOS 网络判断以及 弱网

iOS 网络判断以及 弱网

作者: 有个愛妳的人不容易 | 来源:发表于2019-08-02 16:22 被阅读0次

直接上代码不废话

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions{

[GLobalRealReachability startNotifier];

return YES;

}

#import "NetworkTestLoading.h"

//检测网络状态

#import "RealReachability.h"

#import "NSObject+SimpleKVO.h"

#import "AFNetworkReachabilityManager.h"

@interface NetworkTestLoading ()

@end

@implementationNetworkTestLoading

+ (NetworkTestLoading*)sharedInstance

{

    static NetworkTestLoading* share = nil;

    staticdispatch_once_tonceToken;

    dispatch_once(&onceToken, ^{

        share = [[superallocWithZone:NULL]init];

    });

    returnshare;

}

+ (instancetype)allocWithZone:(struct_NSZone*)zone {

 return [self sharedInstance];

}

- (id)copyWithZone:(struct_NSZone*)zone {

 return self;

}

- (id)mutableCopyWithZone:(struct_NSZone*)zone {

 return self;

}

- (void)noNetworkTestLoading{

    [[NSNotificationCenter defaultCenter] addObserver:self

                                             selector:@selector(networkChanged:)

                                                 name:kRealReachabilityChangedNotification

                                               object:nil];

    [[NSNotificationCenter defaultCenter] addObserver:self

                                             selector:@selector(VPNStatusChanged:)

                                                 name:kRRVPNStatusChangedNotification

                                               object:nil];

    ReachabilityStatus status = [GLobalRealReachability currentReachabilityStatus];

    NSLog(@"Initial reachability status:%@",@(status));

    [self setupFlagLabelWithStatus:status

                           isVPNOn:[GLobalRealReachabilityisVPNOn]

                        accessType:[GLobalRealReachabilitycurrentWWANtype]];

}

- (void)networkChanged:(NSNotification*)notification

{

    RealReachability*reachability = (RealReachability*)notification.object;

    ReachabilityStatusstatus = [reachabilitycurrentReachabilityStatus];

    ReachabilityStatuspreviousStatus = [reachabilitypreviousReachabilityStatus];

    NSLog(@"networkChanged, currentStatus:%@, previousStatus:%@", @(status), @(previousStatus));

    [self setupFlagLabelWithStatus:status

                           isVPNOn:[GLobalRealReachabilityisVPNOn]

                        accessType:[GLobalRealReachabilitycurrentWWANtype]];

}

- (void)VPNStatusChanged:(NSNotification*)notification

{

    // refreshing the status.

    [self setupFlagLabelWithStatus:[GLobalRealReachability currentReachabilityStatus]

                           isVPNOn:[GLobalRealReachabilityisVPNOn]

                        accessType:[GLobalRealReachabilitycurrentWWANtype]];

}

- (void)setupFlagLabelWithStatus:(ReachabilityStatus)status

                         isVPNOn:(BOOL)isVPNOn

                      accessType:(WWANAccessType)accessType

{

    NSMutableString*labelStr = [@""mutableCopy];

    switch(status)

    {

        case RealStatusNotReachable:

        {

            [labelStrappendString:@"Network unreachable!  弱网"];

            break;

        }

        case RealStatusViaWiFi:

        {

            [labelStrappendString:@"Network wifi! Free! "];

            [[NSNotificationCenter defaultCenter] postNotificationName:@"noNetwork" object:@"YES"];

            break;

        }

        case RealStatusViaWWAN:

        {

            [labelStrappendString:@"WWAN in charge! "];

            break;

        }

        case RealStatusUnknown:

        {

            [labelStrappendString:@"Unknown status! Needs debugging! "];

            break;

        }

        default:

        {

            [labelStrappendString:@"Status error! Needs debugging! "];

            break;

        }

    }

    if(isVPNOn)

    {

        [labelStrappendString:@"VPN On! "];

    }

    if (status == RealStatusViaWWAN)

    {

        NSString*descStr;

        if(accessType ==WWANType2G)

        {

            descStr =@"2G";

        }

        elseif(accessType ==WWANType3G)

        {

            descStr =@"3G";

        }

        elseif(accessType ==WWANType4G)

        {

            descStr =@"4G";

        }

        else

        {

            descStr =@"Unknown Status, might be iOS6";

        }

        [labelStrappendString:descStr];

    }

    [[AFNetworkReachabilityManager sharedManager] startMonitoring];

    [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {

        switch(status) {

            case-1:

                NSLog(@"未知网络");

                break;

            case0:

                NSLog(@"网络不可达");

                break;

            case1:

            {

                NSLog(@"GPRS网络");

                //发通知,带头搞事

            }

                break;

            case2:

            {

                NSLog(@"wifi网络");

                //发通知,搞事情

            }

                break;

            default:

                break;

        }

        if (status == AFNetworkReachabilityStatusReachableViaWWAN || status == AFNetworkReachabilityStatusReachableViaWiFi) {

            NSLog(@"有网");

        }else{

            [[NSNotificationCenter defaultCenter] postNotificationName:@"noNetwork" object:@"NO"];

            NSLog(@"没网");

        }

    }];

}

相关文章

  • iOS 网络判断以及 弱网

    直接上代码不废话 - (BOOL)application:(UIApplication*)application ...

  • 网络测试&兼容测试

    网络测试 1、如何做弱网测试 a、通过IOS开发者的弱网设置(2G/3G/4G/WIFI/Very Bad Net...

  • 弱网测试测试点思考

    最近公司网络越来越差,移动端弱网测试就显得非常的急迫,简单的记录今天对弱网测试的一些想法。 弱网测试是网络测试的一...

  • Charles模拟若网环境

    弱网测试模拟 什么样的网络属于弱网低于2G速率的时候都属于弱网,3G也可划分为弱网,一般Wi-Fi不划入弱网测试范...

  • 弱网测试方案-IOS篇

    之前组内已有PC端的弱网测试方案,此篇介绍对于IOS如何进行弱网模拟 PC端一般采用NEWT和ATC 对于IOS有...

  • 一种弱网测试方案

    1.什么样的网络属于弱网 低于3G速率的时候都属于弱网,包含2G、3G,Wifi网络流量低于。 2.弱网测试环境构...

  • 弱网测试利器-Charles工具实战

    一:弱网测试要点 二:利用抓包工具charles进行弱网设置,适用PC端和移动端(IOS/Android) 1、以...

  • Android 网络优化

    网络优化维度流量消耗,弱网质量,网络稳定性以及应用性能等方面。 网络流量质量提升的同时会减少手机电量的消耗,减少公...

  • 移动app网络优化

    移动app网络优化的三个切入点:速度、弱网、网络安全 本章主要讲如何优化网络请求速度。弱网和网络安全都是轻描淡写,...

  • 弱网测试网速配置和测试点

    1、弱网测试主要进行特殊网络状态下的功能测试,同时关注用户体验。 2、弱网测试主要包括弱网功能测试、无网状态测试、...

网友评论

      本文标题:iOS 网络判断以及 弱网

      本文链接:https://www.haomeiwen.com/subject/skiqdctx.html