AFNetworkReachabilityManager

IOS AFNetworkReachabilityManager

  • 说明 :

    • AFNetworkReachabilityManager,这个类监控当前网络的可达性,提供回调block和notificaiton,在可达性变化时调用
  • 文章中尽量不使用或少使用封装, 目的是让大家清楚为了实现功能所需要的官方核心API是哪些(如果使用封装, 会在封装外面加以注释)

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];

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  <block>  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;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值