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
// Apple NetworkStatus Compatible Names.
NotReachable = 0, // 無網路連線
ReachableViaWiFi = 2, //WIFI連線
ReachableViaWWAN = 1 //蜂窩網路連線(4G、3G網路)
};
-> 定義代表網路狀態的block
@classReachability;
typedefvoid (^NetworkReachable)(Reachability * reachability);
typedef
-> 用於檢查網路請求是否可到達指定的主機名
+(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的使用: