iOS开发篇(四)Reachability三方框架的使用与介绍

本文介绍了iOS开发中用于检测网络状态的Reachability框架,包括其作用、API和使用方法。Reachability是对SCNetworkReachability API的封装,提供判断应用是否可达网络的能力,如无网络、WiFi或WWAN连接。文章详细解析了 Reachability 的枚举类型、通知宏、Block回调以及如何初始化和使用该框架。

如今开发99%的手机应用都需要依赖网络,那么开发一款应用首先应该具备判断应用是否是否有网络的功能。

1. 下面就来介绍今天的主角:Reachability

Reachability类:

这个类用于检测当前网络状态,它不是SDK的一部分,可以在iOS Developer Library里找到这份代码。

从苹果网站上下载Reachability.zip文件,解压之。Reachability类实际上是苹果公司对SCNetworkReachability API的封装,这个API定义在SystemConfigure.framework库中。如果有其他特别的需求,也可以直接使用这个原生的SCNetworkReachability类。

2. Reachability的API:

使用Reachability该类时倒入SystemConfigure.framework架包,首先分析Reachability.h文件,

-> 宏定义关于网络连接变更的通知标识名称:

externNSString *const kReachabilityChangedNotification;

 长````````````````````````````````````````````````````````````````````

-> 定义代表网络状态的枚举类型NetworkStatus:

typedefNS_ENUM(NSInteger, NetworkStatus) {

    // Apple NetworkStatus Compatible Names.

    NotReachable = 0,   // 无网络连接

    ReachableViaWiFi = 2, //WIFI连接

    ReachableViaWWAN = 1  //蜂窝网络连接(4G3G网络)

};


-> 定义代表网络状态的block

@classReachability;

typedefvoid (^NetworkReachable)(Reachability * reachability);

typedefvoid (^NetworkUnreachable)(Reachability * reachability);


-> 用于检查网络请求是否可到达指定的主机名

+(Reachability*)reachabilityWithHostname:(NSString*)hostname;

// This is identical to the function above, but is here to maintain

//compatibility with Apples original code. (see .m)

+(Reachability*)reachabilityWithHostName:(NSString*)hostname;


-> 用于检查路由连接是否有效

+(Reachability*)reachabilityForInternetConnection;

-> 用于检查网络请求是否可到达指定的IP地址

+(Reachability*)reachabilityWithAddress:(conststruct sockaddr_in*)hostAddress;


-> 用于检查本地的WiFi连接是否有效

+(Reachability*)reachabilityForLocalWiFi;


-(Reachability *)initWithReachabilityRef:(SCNetworkReachabilityRef)ref;


-> 在当前程序的运行回路中开始监听网络请求可到达的通知

-(BOOL)startNotifier;

-(void)stopNotifier;


-(BOOL)isReachable;

-(BOOL)isReachableViaWWAN;

-(BOOL)isReachableViaWiFi;


// WWAN may be available, but not active until a connection has been established.

// WiFi may require a connection for VPN on Demand.

-(BOOL)isConnectionRequired;// Identical DDG variant.


-> 连接需求

-(BOOL)connectionRequired;// Apple's routine.

// Dynamic, on demand connection?

-(BOOL)isConnectionOnDemand;

// Is user intervention required?

-(BOOL)isInterventionRequired;


-> 当前网络请求可到达状态

-(NetworkStatus)currentReachabilityStatus;


-(SCNetworkReachabilityFlags)reachabilityFlags;

-(NSString*)currentReachabilityString;

-(NSString*)currentReachabilityFlags;


3. Reachability的使用:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值