网络监控

本文的意义

  1. 利用苹果原生的类Reachability,实时监控网络的状态
  2. 利用框架AFNetworking实时监控网络状态

网络状态实时监控的目的

  • 让用户了解自己的网络状态,防止一些误会

  • 根据用户的网络状态进行智能处理,节省用户流量,提高用户体验

  • WIFI\3G网络:自动下载高清图片

  • 低速网络:只下载缩略图

  • 没有网络:只显示离线的缓存数据

  • 苹果官方提供了一个叫Reachability的示例程序,便于开发者检测网络状态
    https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip

利用苹果原生的类Reachability实现实时监控网络状态

Reachability的使用步骤

  • 添加框架SystemConfiguration.framework
  • 添加源代码
    - Reachability.h
    - Reachability.m
  • 包含头文件

实现代码如下:

- (void)appleMonitoring
{
    // 监听通知
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getNetworkStatus) name:kReachabilityChangedNotification object:nil];

    // 开始监控网络
    self.reachability = [Reachability reachabilityForInternetConnection];
    [self.reachability startNotifier];
}

// 重写控制器的dealloc方法,当控制器销毁的时候移除通知
- (void)dealloc
{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
    // 关闭监控
    [self.reachability stopNotifier];
    self.reachability = nil;
}

// 获取网络状态
- (void)getNetworkStatus
{
    // 判断当前网络是否是WiFi
    if ([Reachability reachabilityForLocalWiFi].currentReachabilityStatus != NotReachable) {
        NSLog(@"是wifi");

    // 判断当前网络是否是手机自带网络
    } else if ([Reachability reachabilityForInternetConnection].currentReachabilityStatus != NotReachable) {
        NSLog(@"是手机自带网络");
    } else {
        NSLog(@"网络有问题");
    }
}

利用流行框架AFNetworking实现实时监控网络状态

实现代码如下:

- (void)afnMonitoring
{
    // 开始网络监控
    AFNetworkReachabilityManager *mgr = [AFNetworkReachabilityManager sharedManager];


    [mgr setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
        NSLog(@"-----当前的网络状态---%zd", status);
    }];

    [mgr startMonitoring];

    // 拿到当前网络状态
    // mgr.networkReachabilityStatus;
}

你可能感兴趣的:(网络监控)