IOS--网络监测

大部分的应用都与网络有关 如果你没有网络监测 来监测是否连接网络 很容易让背锅
用法也特别的简单 按照我下面的 二部曲 包你轻松过

1.第一部曲—导入
Reachability类:
这个类用于检测当前网络状态,它不是SDK的一部分,可以在iOS Developer Library里找到这份代码。
从苹果网站上下载Reachability.zip文件,解压之。 (1)把Reachability.h和Reachability.m文件拖到项目中。
这里写图片描述
(2)添加框架:SystemConfiguration.framework。
这里写图片描述
( 3 ) 运行环境非 ARC 需要修改 “-fno-objc-arc” (复制就行)

2.第二部曲 –使用方法
1>静态
网络环境现在分三种
①WIFI
②2G/3G/4G
③无网络
所以 Reachability 监测也是分三种
①WIFI reachabilityForLocalWiFi
②2G/3G/4G reachabilityForInternetConnection
③无网络 NotReachable

- (void)checkNetworkState
{
    // 1.检测wifi状态
    Reachability *wifi = [Reachability reachabilityForLocalWiFi];

    // 2.检测手机是否能上网络(WIFI\3G\2.5G)
    Reachability *conn = [Reachability reachabilityForInternetConnection];

    // 3.判断网络状态
    if ([wifi currentReachabilityStatus] != NotReachable) { // 有wifi
        NSLog(@"有wifi");

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

    } else { // 没有网络

        NSLog(@"没有网络");
    }
}

2>实时
实时的监控几行代码就可以了
原理就是用通知 调用它自身一个网络状态变化的信息方法

- (void)viewDidLoad
{
    [super viewDidLoad];
    //监听通知
  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkStateChange) name:kReachabilityChangedNotification object:nil];

//发布通知 这个地方的对象必须是全局的对象 
    self.conn = [Reachability reachabilityForInternetConnection];

//开启通知
    [self.conn startNotifier];
}

- (void)dealloc
{
    [self.conn stopNotifier];
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

- (void)networkStateChange
{
    [self checkNetworkState];
}
- (void)checkNetworkState
{
    // 1.检测wifi状态
    Reachability *wifi = [Reachability reachabilityForLocalWiFi];

    // 2.检测手机是否能上网络(WIFI\3G\2.5G)
    Reachability *conn = [Reachability reachabilityForInternetConnection];

    // 3.判断网络状态
    if ([wifi currentReachabilityStatus] != NotReachable) { // 有wifi
        NSLog(@"有wifi");

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

    } else { // 没有网络

        NSLog(@"没有网络");
    }
}

就上面这两部就够了
静态和实时 我肯定是推荐实时的
你可以写在 APPDelegate 里面 也可以写在任何地方 但是注意 如果写在 app 里面 dealloc 似乎是不需要写的 请自行测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值