说明 :
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
功能实现
思路
- 导入AFNetworking工程文件.
- 引入AFNetworkReachabilityManager.h头文件.
- 设置延时调用
- 初始化单例并同时开启监听
- 实现网络监听方法, 返回当前网络的通知
(1). 导入AFNetworking工程文件
/** 本文使用的AFNetworking版本为AFNetworking_v2.5.1. */
(2). 引入AFNetworkReachabilityManager.h头文件
#import "AFNetworkReachabilityManager.h"
(3). 设置延时调用
/**
* 由于检测网络有一定的延迟, 所以在启动APP的时候如果不设置网络的延迟, 直接调用[AFNetworkReachabilityManager sharedManager].networkReachabilityStatus有可能得到的是status 返回的值是 AFNetworkReachabilityStatusUnknown;
这个时候虽然有网, 但是也会因为网络的延迟, 直接做出错误的判断.
一般建议设置延时调用 */
/** 给大家简单举个例子(surveyNetworkConcatenate:是自己写的方法) */
/** 0.35秒后再执行surveyNetworkConcat