iOS开发——Reachability和AFNetworking判断网络连接状态

Posted 乱七八糟21号

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS开发——Reachability和AFNetworking判断网络连接状态相关的知识,希望对你有一定的参考价值。

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

// 创建Reachability
self.conn = [Reachability reachabilityForInternetConnection];
// 开始监控网络(一旦网络状态发生改变, 就会发出通知kReachabilityChangedNotification)
[self.conn 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(@"没有网络"); } }

  二、AFNetworking // 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开发——Reachability和AFNetworking判断网络连接状态的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发实践之网络检測Reachability

iOS开发实践之网络检测Reachability

AFNet3.0上传图片

iOS:Reachability网络监听

使用Reachability实时监测网络连通性

使用GCD中的dispatch_semaphore(信号量)处理一个界面多个请求(把握AFNet网络请求完成的正确时机)