2015年1月20日 星期二

[Objective-C] 利用Reachability來檢測網路狀態

Reachability,是蘋果提供用來檢測網路狀態的LIbrary,

上架有使用網路功能的APP時,都必須要檢測網路狀態,若是網路不可使用時,

要明確地告知使用者,否則可能會被蘋果退件。

在此介紹簡單的檢測網路的方法,先下載Reachability,之後把Reachability.h,m 加入專案中

初始化Reachability,並丟入要測試的網址。
Reachability *rech = [Reachability reachabilityWithHostName:@"www.apple.com"];

使用NetworkStatus類別,來取得當前的網路狀態
NetworkStatus netStatus = [rech currentReachabilityStatus];

有三種可能的狀態:
NotReachable      無法連線
ReachableViaWiFi  使用WiFi
ReachableViaWWAN  使用WWAN(3G,4G)

這樣就能偵測網路狀態了
if (netStatus == NotReachable) {
NSLog(@"目前沒有網路,請檢查您的網路狀態");
}

此外,Reachability有提供Notification,可以將他加入監聽之中。

name使用Reachability類別提供的name

kReachabilityChangedNotification

加入到監聽之中
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];

開始監聽
[rech startNotifier];

只要使用者網路狀態有問題,我們可以立刻告知使用者錯誤訊息,

而不是讓APP就卡死在那邊,以利提升使用者體驗。