您好,欢迎来到伴沃教育。
搜索
您的当前位置:首页iOS开发 获取当前网络状态

iOS开发 获取当前网络状态

来源:伴沃教育

1、通过监听手机的statusbar的状态还获取用户的网络状态。可以通过苹果的审核在Appstore上架。

typedef NS_ENUM(NSUInteger,NetWorkStates) {
    NetworkStatesNone, // 没有网络
    NetworkStates2G, // 2G
    NetworkStates3G, // 3G
    NetworkStates4G, // 4G
    NetworkStatesWIFI // WIFI
};
+ (NetWorkStates)getNetWorkState {
    NSArray *subViews = [[[[UIApplication sharedApplication] valueForKeyPath:@"statusBar"] valueForKeyPath:@"foregroundView"] subviews];
    NetWorkStates state = NetworkStatesNone;
    for (id child in subViews) {
        if ([child isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) {
            NSInteger netWorkType = [[child valueForKeyPath:@"dataNetworkType"] integerValue];
            switch (netWorkType) {
                case 0:
                    state = NetworkStatesNone;
                    break;
                case 1:
                    state = NetworkStates2G;
                    break;
                case 2:
                    state = NetworkStates3G;
                    break;
                case 3:
                    state = NetworkStates4G;
                    break;
                case 5:
                    state = NetworkStatesWIFI;
                    break;
                default:
                    break;
            }
        }
    }
    return state;
}

2、通过Reachablity监听网络状态 对用户设备的网络状态进行实时监控。

- (void)checkNetworkStates
{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkChange) name:kReachabilityChangedNotification object:nil];
    _reacha = [Reachability 
    [_reacha startNotifier];
}
- (void)networkChange {
    NetworkStatus status = [_reacha currentReachabilityStatus];
    
    switch (status) {
        case NotReachable:
            break;
        case ReachableViaWWAN:
            break;
        case ReachableViaWiFi:
            break;
        default:
            break;
    }
}

NewWorkStatus有三种状态:

typedef NS_ENUM(NSInteger, NetworkStatus) {
    // Apple NetworkStatus Compatible Names.
    NotReachable = 0,  //没有网络
    ReachableViaWiFi = 2, //wifi
    ReachableViaWWAN = 1 //运营商网络
};

Copyright © 2019- bangwoyixia.com 版权所有 湘ICP备2023022004号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务