iOS App监听网络状态改变

引言

在App中经常会监听网络的变化,下面是网上经常用到的两种方式

1.Reachability

// 监听网络状态改变的通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkStateChange) name:kReachabilityChangedNotification object:nil];

// 创建Reachability
self.connetion = [Reachability reachabilityForInternetConnection];
// 开始监控网络(一旦网络状态发生改变, 就会发出通知kReachabilityChangedNotification)
[self.connetion startNotifier];
// 处理网络状态改变
- (void)networkStateChange
{
    // 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.AFN

// 1.获得网络监控的管理者
AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];

// 2.设置网络状态改变后的处理
[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
    // 当网络状态改变了, 就会调用这个block
    switch (status) {
        case AFNetworkReachabilityStatusUnknown: // 未知网络
            NSLog(@"未知网络");
            break;
            
        case AFNetworkReachabilityStatusNotReachable: // 没有网络(断网)
            NSLog(@"没有网络(断网)");
            break;
            
        case AFNetworkReachabilityStatusReachableViaWWAN: // 手机自带网络
            NSLog(@"手机自带网络");
            break;
            
        case AFNetworkReachabilityStatusReachableViaWiFi: // WIFI
            NSLog(@"WIFI");
            break;
    }
}];

// 3.开始监控
[manager startMonitoring];
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在App中经常会监听网络的变化,下面是网上经常用到的两种方式 1.Reachability // 处理网络状态改变...
    super_2e20阅读 9,593评论 0 1
  • 1️⃣-利用AFN框架 //1.创建网络状态监测管理者AFNetworkReachabilityManager *...
    CoderZS阅读 12,639评论 0 24
  • 12月25日,冬至后的第三天,2017年还有最后五天。直觉告诉我,这几天我应该要做点什么。(加入网师的第一年...
    2016小鱼的梦阅读 1,722评论 0 1
  • 改变 自己是一名幼师,虽然不曾有自己真正的孩子,但是却把幼儿园中的孩子当成了自己家的孩子。也许是爱之深责之切吧。...
    315喵晓诺阅读 1,449评论 2 2
  • 天高湖面阔,雁影水中羞。 芳沁浮幽岸,圆荷绕静舟。 接天连翠碧,虫语叫不休。 恍遇天仙子,霞光溢彩柔。
    悼光者阅读 4,155评论 2 25