zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Sqlserver 2005 配置 数据库镜像:镜像模式
    Sqlserver 2005 配置 数据库镜像:数据库镜像期间可能出现的故障:镜像超时机制
    Sqlserver 2005 配置 数据库镜像:镜像状态
    Sqlserver 2005 配置 数据库镜像:对数据库镜像设置进行故障排除:重点!!!!!!!!!!!!!
    HTTP请求和响应过程
    HTTP模型头域
    HTTP协议简介
    KeyDown,KeyPress 和KeyUp 之我谈(更新版本)
    jquery ajax loading效果
    HTTP模型头域
  • 原文地址:https://www.cnblogs.com/xilanglang/p/4991547.html
Copyright © 2011-2022 走看看