IOS開發中網路狀態的判斷和時時更新
現在手機應用開發,幾乎離不開網路操作,這裡介紹一下當前網路狀態的判斷和如何監聽網路狀態的改變。
首先新增原始檔,在Apple的開原始碼Reachability中介紹瞭如何獲取網路狀態,這裡也是使用這個,把Reachability.h和Reachability.m檔案新增到你的工程中。沒有這兩個檔案?https://github.com/tonymillion/Reachability這裡是開源專案,裡面有這兩個檔案。注意還需要新增支援庫:將SystemConfig.framework新增到工程。
在Reachability中定義了三種網路型別,如下:
typedef
uint32_t
enum {
// Apple NetworkStatus Constant Names.
NotReachable = kNotReachable, //無網路
ReachableViaWiFi = kReachableViaWiFi, //GPRS/3G
ReachableViaWWAN = kReachableViaWWAN //WIFI
};
判斷網路狀態的程式碼,如下:
方法名言簡意賅,很容易理解。+ (BOOL) IsEnableWIFI { return ([[Reachability reachabilityForLocalWiFi] currentReachabilityStatus] != NotReachable); } + (BOOL) IsEnableIntent { return ([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] != NotReachable); }
那麼有時我們需要時時的監聽網路狀態,那麼怎麼辦呢?其實在Reachability中也是有處理的,該物件會監聽網路狀態的改變,併發出一個名為 “kReachabilityChangedNotification”的notification,這個字串在Reachability.m中定義,
NSString *const kReachabilityChangedNotification =@"NetworkReachabilityChangedNotification";
如果你想在應用中時時的監聽網路狀態,只需要註冊這個notification的接收器。當網路狀態改變時就會回撥該方法[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name: kReachabilityChangedNotification object: nil];
- (void)reachabilityChanged:(NSNotification *)note {
Reachability* curReach = [note object];
NSParameterAssert([curReach isKindOfClass: [Reachability class]]);
//得到當前網路狀態
self.netStatus = [curReach currentReachabilityStatus];
}