iOS_AFNetworking_AFNetworkReachabilityManager(检测网络可达性)

  • 说明 :

  • AFNetworkReachabilityManager,这个类监控当前网络的可达性,提供回调block和notificaiton,在可达性变化时调用

  • 文章中尽量不使用或少使用封装, 目的是让大家清楚为了实现功能所需要的官方核心API是哪些(如果使用封装, 会在封装外面加以注释)

  • 此文章由 @One_City编写, 经@春雨 @Scott 审核.若转载此文章, 请注明出处和作者

AFNetworkReachabilityManager使用方法

核心API

class : AFNetworkReachabilityManager
delegate : 无
涉及的API : (API的官方详细注释(英文)详见本章结尾)


/** 1. 初始化指定的可达性管理器的实例。 */
+ (instancetype)sharedManager

/** 2. 网络改变时,执行block块内的代码 */
- (void)setReachabilityStatusChangeBlock:(nullable void ( ^ ) ( AFNetworkReachabilityStatus status ))block 

功能实现

思路

  1. 导入AFNetworking工程文件.
  2. 引入AFNetworkReachabilityManager.h头文件.
  3. 设置延时调用
  4. 初始化单例并同时开启监听
  5. 实现网络监听方法, 返回当前网络的通知
(1). 导入AFNetworking工程文件
/** 本文使用的AFNetworking版本为AFNetworking_v2.5.1. */
(2). 引入AFNetworkReachabilityManager.h头文件

#import "AFNetworkReachabilityManager.h"

(3). 设置延时调用

/**
 * 由于检测网络有一定的延迟, 所以在启动APP的时候如果不设置网络的延迟, 直接调用[AFNetworkReachabilityManager sharedManager].networkReachabilityStatus有可能得到的是status 返回的值是 AFNetworkReachabilityStatusUnknown;
这个时候虽然有网, 但是也会因为网络的延迟, 直接做出错误的判断.
  一般建议设置延时调用 */

/** 给大家简单举个例子(surveyNetworkConcatenate:是自己写的方法) */

/** 0.35秒后再执行surveyNetworkConcatenate:方法. */
[self performSelector:@selector(surveyNetworkConcatenate:) withObject:nil afterDelay:0.35f];

(4). 实现网络监听方法, 返回当前网络的通知

/* 函数调用返回的枚举值 */
/**
   AFNetworkReachabilityStatusUnknown          = -1,  // 未知
   AFNetworkReachabilityStatusNotReachable     = 0,   // 无连接
   AFNetworkReachabilityStatusReachableViaWWAN = 1,   // 3G 花钱
   AFNetworkReachabilityStatusReachableViaWiFi = 2,   // 局域网络,
 */
[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
        switch (status) {
            case AFNetworkReachabilityStatusNotReachable:{
                NSLog(@"无网络");
                break;
            }
            case AFNetworkReachabilityStatusReachableViaWiFi:{
                NSLog(@"WiFi网络");
                break;
            }
            case AFNetworkReachabilityStatusReachableViaWWAN:{
                NSLog(@"无线网络");
                break;
            }
            default:
                break;
        }
    }];
(5). 开启监听,即开始监视网络连接情况
    /** 1. 开启监听 */
    [[AFNetworkReachabilityManager sharedManager] startMonitoring];

    • AFNetworkReachabilityManager使用方法
      • 核心API
      • 功能实现
      • 思路
          • 1 导入AFNetworking工程文件
          • 2 引入AFNetworkReachabilityManagerh头文件
          • 3 设置延时调用
          • 4 实现网络监听方法 返回当前网络的通知
          • 5 开启监听即开始监视网络连接情况
    • API 官方注释英文

API 官方注释(英文)


/**
 * @discussion  Returns the shared network reachability manager.
 * 
 */
+ (instancetype)sharedManager;

/**

 * @discussion  Starts monitoring for changes in network reachability status.
 */
- (void)startMonitoring;

/**
 * @Discussion  Sets a callback to be executed when the network availability of the `baseURL` host changes.

 * @param    A block object to be executed when the network availability of the `baseURL` host changes.. This block has no return value and takes a single argument which represents the various reachability states from the device to the `baseURL`.
 */
- (void)setReachabilityStatusChangeBlock:(void (^)(AFNetworkReachabilityStatus status))block;

你可能感兴趣的:(iOS)