• iOSReachability判断网络连接状态


    //

    //  NetStateManage.h

    //

    //  Created by miniu on 15/11/24.

    //  Copyright © 2015年 mini. All rights reserved.

    //

    #import <Foundation/Foundation.h>

    #import "Reachability.h"

    @protocol NetStateManageDelegate <NSObject>

    @optional

    -(void)networkStatusChange:(NetworkStatus)networkStatus;

    @end

    @interface NetStateManage : NSObject

    @property (nonatomic,weak)id <NetStateManageDelegate>delegate;

    + (NetStateManage *)shareInstance;

    //当前的网络状态

    - (NetworkStatus)currentNetworkStatus;

    @end

    //

    //  NetStateManage.m

    //

    //  Created by miniu on 15/11/24.

    //  Copyright © 2015年 mini. All rights reserved.

    //

    #import "NetStateManage.h"

    @interface NetStateManage ()

    {

        Reachability *reachability;

        NetworkStatus hostNetStatus;

    }

    @end

    @implementation NetStateManage

    - (instancetype)init

    {

        self = [super init];

        

        if (self) {

            //使用Reachability

            [self useReachability];

        }

        

        return self;

    }

    - (void)useReachability{

        // 监听网络状态改变的通知

        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkStateChange) name:kReachabilityChangedNotification object:nil];

        

        // 创建Reachability

        reachability = [Reachability reachabilityForInternetConnection];

        // 开始监控网络(一旦网络状态发生改变, 就会发出通知kReachabilityChangedNotification)

        [reachability startNotifier];

    }

    // 处理网络状态改变

    - (void)networkStateChange

    {

        // 1.检测wifi状态

        Reachability *wifi = [Reachability reachabilityForLocalWiFi];

        // 2.检测手机是否能上网络(WIFI3G2.5G)

        Reachability *conn = [Reachability reachabilityForInternetConnection];

        // 3.判断网络状态

        if ([wifi currentReachabilityStatus] != NotReachable) { // 有wifi

            NSLog(@"有wifi");

            hostNetStatus=ReachableViaWiFi;

        } else if ([conn currentReachabilityStatus] != NotReachable) { // 没有使用wifi, 使用手机自带网络进行上网

            NSLog(@"使用手机自带网络进行上网");

            hostNetStatus=ReachableViaWWAN;

        }else { // 没有网络

            NSLog(@"没有网络");

            hostNetStatus=NotReachable;

        }

        

        if ([self.delegate respondsToSelector:@selector(networkStatusChange:)]) {

            [self.delegate networkStatusChange:hostNetStatus];

        }

    }

    + (NetStateManage *)shareInstance

    {

        static NetStateManage *hardwareManager=nil;

        static dispatch_once_t onceToken;

        dispatch_once(&onceToken, ^{

            hardwareManager=[[self alloc] init];

        });

        

        return hardwareManager;

    }

    //返回当前的网络状态

    - (NetworkStatus)currentNetworkStatus

    {

        return [reachability currentReachabilityStatus];

    }

    @end

  • 相关阅读:
    Excel宏开发之合并单元格
    excel破解工作簿与工作表保护
    jquery高级编程学习
    Git 和 SVN 存储方式的差异对比
    SSH 连接时间超时
    linux 使用 Python 画图工具matplotlib 提示display 错误
    centos安装字体
    linux编译安装中configure、make和make install各自的作用
    npm run build
    centos ssh 免密码登录
  • 原文地址:https://www.cnblogs.com/xilanglang/p/4991547.html
Copyright © 2020-2023  润新知