iOS实时监控网络状态的改变

 更新时间:2016年08月12日 11:37:19   作者:Running2snail  
这篇文章主要为大家详细介绍了iOS实时监控网络状态的改变的相关资料,感兴趣的小伙伴们可以参考一下

在网络应用中,有的时候需要对用户设备的网络状态进行实时监控,有两个目的:
 (1)让用户了解自己的网络状态,防止一些误会(比如怪应用无能)
 (2)根据用户的网络状态进行智能处理,节省用户流量,提高用户体验 
  WIFI网络:自动下载高清图片 
  4G/3G网络:只下载缩略图 
  没有网络:只显示离线的缓存数据 

 常用的有以下两种方法: 
  (1)、使用苹果观法提供的检测iOS设备网络环境用的库 Reachablity 
  (2)、使用AFN框架中的AFNetworkReachabilityManager来监听网络状态的改变 

一、苹果官方提供了一个叫Reachability的示例程序,便于开发者检测网络状态 
使用之前请从Apple网站下载示例:http://xiazai.jb51.net/201608/yuanma/Reachability(jb51.net).rar

然后将Reachability.h 和 Reachability.m 加到自己的项目中,并引用 SystemConfiguration.framework,就可以使用了。
Reachability 中定义了3种网络状态: 

typedef enum : NSInteger {

  NotReachable = 0, //无连接
  ReachableViaWiFi, //使用3G/GPRS网络
  ReachableViaWWAN //使用WiFi网络

} NetworkStatus;

我们可以在程序启动以后启动实时监测 

// AppDelegate.m


@interface AppDelegate ()

@property (nonatomic, strong) Reachability *reachability;

@end

// 程序启动器,启动网络监视
- (void)applicationDidFinishLaunching:(UIApplication *)application {

  // 设置网络检测的站点
    NSString *remoteHostName = @"www.apple.com";
  self.reachability = [Reachability reachabilityWithHostName:remoteHostName];
  // 设置网络状态变化时的通知函数
  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:)
                       name:@"kNetworkReachabilityChangedNotification" object:nil];
  [self updateStatus];
}


- (void)reachabilityStatusChange:(NSNotification *)notification
{
  Reachability* curReach = [notification object];
  NSParameterAssert([curReach isKindOfClass:[Reachability class]]);
  [self updateInterfaceWithReachability:curReach];
}

- (void)updateInterfaceWithReachability:(Reachability *)reachability
{
  if (reachability == _reachability)
  {
    NetworkStatus netStatus = [reachability currentReachabilityStatus];
    switch (netStatus)
    {
      case NotReachable:   {
        NSLog(@"没有网络!");
        break;
      }
      case ReachableViaWWAN: {
        NSLog(@"4G/3G");
        break;
      }
      case ReachableViaWiFi: {
        NSLog(@"WiFi");
        break;
      }
    }
  }
}


- (void)dealloc
{
   [_reachability stopNotifier];
  [[NSNotificationCenter defaultCenter] removeObserver:self name:kReachabilityChangedNotification object:nil];
} 

二、使用AFN框架中的AFNetworkReachabilityManager来监听网络状态的改变

//使用AFN框架来检测网络状态的改变
-(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];
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • IOS React等Title不显示问题解决办法

    IOS React等Title不显示问题解决办法

    这篇文章主要介绍了IOS React等Title不显示问题解决办法的相关资料,需要的朋友可以参考下
    2017-02-02
  • 2016年iOS公开可利用漏洞总结

    2016年iOS公开可利用漏洞总结

    本文总结了2016年比较严重的iOS漏洞(可用于远程代码执行或越狱),希望能够对大家移动安全方面的工作和研究带来一些帮助。
    2016-12-12
  • 详解iOS集成GoogleMap(定位、搜索)

    详解iOS集成GoogleMap(定位、搜索)

    这篇文章主要介绍了iOS集成GoogleMap(定位、搜索)需要注意的地方,对此有兴趣的读者一起学习下吧。
    2018-02-02
  • iOS自动进行View标记的方法详解

    iOS自动进行View标记的方法详解

    这篇文章主要给大家介绍了关于iOS自动进行View标记的相关资料,文中通过示例代码介绍的非常详细,对各位iOS开发者们具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • iOS实现自定义日期选择器示例

    iOS实现自定义日期选择器示例

    本篇文章主要介绍了iOS实现自定义日期选择器示例,可以显示年月日时分,非常具有实用价值,需要的朋友可以参考下。
    2017-02-02
  • 详解ios监听reloadData刷新列表完毕的时机

    详解ios监听reloadData刷新列表完毕的时机

    这篇文章主要介绍了详解ios监听reloadData刷新列表完毕的时机,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • iOS 检测网络状态的两种方法

    iOS 检测网络状态的两种方法

    一般有Reachability和AFNetworking监测两种方式,都是第三方的框架,下文逐一详细给大家讲解,感兴趣的朋友一起看看吧
    2016-10-10
  • iOS实现图片折叠效果

    iOS实现图片折叠效果

    这篇文章主要为大家详细介绍了iOS实现图片折叠效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • Xcode使用教程详细讲解(全)

    Xcode使用教程详细讲解(全)

    本文介绍的是Xcode使用教程详细讲解,Xcode是一个款强大的IDE开发环境,就像你在写Windows程序时需要VS2005一样 需要要Xcode为你写Mac程序提供环境
    2015-07-07
  • iOS Objective-c实现左右滑动切换页面

    iOS Objective-c实现左右滑动切换页面

    这篇文章主要为大家详细介绍了iOS Objective-c实现左右滑动切换页面,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08

最新评论