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];

你可能感兴趣的:(iOS App监听网络状态改变)