如今开发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 //蜂窝网络连接(4G、3G网络)
};
-> 定义代表网络状态的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的使用:
本文介绍了iOS开发中用于检测网络状态的Reachability框架,包括其作用、API和使用方法。Reachability是对SCNetworkReachability API的封装,提供判断应用是否可达网络的能力,如无网络、WiFi或WWAN连接。文章详细解析了 Reachability 的枚举类型、通知宏、Block回调以及如何初始化和使用该框架。
Reachability三方框架的使用与介绍&spm=1001.2101.3001.5002&articleId=50678394&d=1&t=3&u=f2b446a49c8c41cd971a76326dcdda54)
908

被折叠的 条评论
为什么被折叠?



