1. 程式人生 > >iOS開發篇(四)Reachability三方框架的使用與介紹

iOS開發篇(四)Reachability三方框架的使用與介紹

如今開發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);

typedef

void (^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的使用: