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

  • 相关阅读:
    使用def文件简化dll导出
    ASP.NET Core MVC 之过滤器(Filter)
    ASP.NET Core 中间件 中间件(Middleware)和过滤器(Filter)的区别
    drf-apiview解读系列二
    干货分享,40个photoshop技能送给你!
    冒泡排序 深度优化
    数据结构与算法_14 _ 排序优化:如何实现一个通用的、高性能的排序函数
    数据结构与算法_12 _ 排序(下):如何用快排思想在O(n)内查找第K大元素
    数据结构与算法_13 _ 线性排序:如何根据年龄给100万用户数据排序
    数据结构与算法_11 _ 排序(上):为什么插入排序比冒泡排序更受欢迎
  • 原文地址:https://www.cnblogs.com/xilanglang/p/4991547.html
Copyright © 2011-2022 走看看