美文网首页
网络状态的监听

网络状态的监听

作者: Mario_ZJ | 来源:发表于2016-10-19 15:17 被阅读67次

网络状态改变的监听方法

  • 通过苹果苹果提供的Reachability类来实现监听
    注意 :
  1. 这个类通常情况下,要想实现持续监听网络状态的改变,需要和通知一起使用
  2. 只有网络状态发生变化的时候才会被调用,所以没有办法获取初始的网络状态
//使用苹果提供的Reachability来检测网络状态,如果要持续监听网络状态的概念,需要结合通知一起使用。
//提供下载地址:
https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    //1.注册一个通知
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkChange) name:kReachabilityChangedNotification object:nil];
    //2.拿到一个对象,然后调用开始监听方法
    Reachability *r = [Reachability reachabilityForInternetConnection];
    [r startNotifier];
    //持有该对象,不要让该对象释放掉
    self.r = r;
}
//当控制器释放的时候,移除通知的监听
-(void)dealloc
{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}
-(void)networkChange
{
    //获取当前网络的状态
   if ([Reachability reachabilityForInternetConnection].currentReachabilityStatus == ReachableViaWWAN)
    {
        NSLog(@"当前网络状态为3G");
        return;
    }
    if ([Reachability reachabilityForLocalWiFi].currentReachabilityStatus == ReachableViaWiFi)
    {
        NSLog(@"当前网络状态为wifi");
        return;
    }
    NSLog(@"当前没有网络");
}
  • 通过使用AFN框架来监听网络状态的改变
    注意 : **
    通过AFN框架的AFNetworkReachabilityManager类实现监听网络状态的改变,可以在
    程序刚启动的时候就获取网络的状态,并且可以实时监听网络状态的改变**.
-(void)AFNReachability
{
    //1.创建网络监听管理者
    AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];

    //2.监听网络状态的改变
    /*
     AFNetworkReachabilityStatusUnknown          = 未知
     AFNetworkReachabilityStatusNotReachable     = 没有网络
     AFNetworkReachabilityStatusReachableViaWWAN = 3G
     AFNetworkReachabilityStatusReachableViaWiFi = WIFI
     */
    [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
        switch (status) {
            case AFNetworkReachabilityStatusUnknown:
                NSLog(@"未知");
                break;
            case AFNetworkReachabilityStatusNotReachable:
                NSLog(@"没有网络");
                break;
            case AFNetworkReachabilityStatusReachableViaWWAN:
                NSLog(@"3G");
                break;
            case AFNetworkReachabilityStatusReachableViaWiFi:
                NSLog(@"WIFI");
                break;

            default:
                break;
        }
    }];

    //3.开始监听
    [manager startMonitoring];
}

相关文章

  • AFNetwork

    //设置网络监听 (void)monitorNetworking{//监听网络状态AFNetworkReachab...

  • 网络状态监听

  • 监听网络状态

    在项目中导入Reachability.h和Reachability.m文件,地址:Reachability Vie...

  • 监听网络状态

    监听网络状态 在日常开发中,我们经常会遇到这种情况,需要我们对手机的网络状态进行监听 比如:播放视频需要提示是4G...

  • 监听网络状态

    如果用系统的方法需要导入 Reachability.h Reachability.m @interface Vie...

  • 网络状态监听

    监听网络变化在开发中是经常用到的,例如我们断网有一些友好的提示,或者根据不同的网络更改一些加载策略,例如wifi看...

  • 网络状态监听

    一、在 AppDelegate.m 中创建监听单例,并监听发起通知 二、在任意地方接收状态通知,此非block通知...

  • 网络状态监听

  • 网络状态的监听

    网络状态改变的监听方法 通过苹果苹果提供的Reachability类来实现监听注意 : 这个类通常情况下,要想实现...

  • iOS中根据网络环境显示不同图片(干货)

    首先说一下怎么监听网络状态的改变 监听网络状态的改变可以使用苹果提供的Reachability来检测网络状态,也可...

网友评论

      本文标题:网络状态的监听

      本文链接:https://www.haomeiwen.com/subject/gtubettx.html