在開(kāi)發(fā)iOS應(yīng)用或者游戲時(shí),我們可以通過(guò)Reachability庫(kù)進(jìn)行iOS設(shè)備的網(wǎng)絡(luò)監(jiān)測(cè)。
首先,Reachability官方下載地址在這里。
1. Reachability簡(jiǎn)介
Reachablity 是一個(gè)iOS下檢測(cè),iOS設(shè)備網(wǎng)絡(luò)環(huán)境用的庫(kù)。
- 監(jiān)視設(shè)備網(wǎng)絡(luò)是否可用。
- 監(jiān)視當(dāng)前網(wǎng)絡(luò)的連接方式。
- 監(jiān)測(cè)網(wǎng)絡(luò)連接方式的變更。
簡(jiǎn)單點(diǎn)說(shuō),Reachablity可以監(jiān)測(cè)當(dāng)前設(shè)備是未聯(lián)網(wǎng)狀態(tài)還是連接2g,3g,4g或wifi狀態(tài),并且當(dāng)網(wǎng)絡(luò)連接類型改變的時(shí)候可以實(shí)時(shí)監(jiān)測(cè)通知。
2. Reachability使用
把下載的Reachability.h和Reachability.m文件加到項(xiàng)目中,在入口文件處包含Reachability頭文件并加入下列代碼:
(例如我使用cocos2d-x開(kāi)發(fā),就在AppController.mm文件中處理)
// 監(jiān)測(cè)網(wǎng)絡(luò)情況
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(reachabilityChanged:)
name: kReachabilityChangedNotification
object: nil];
Reachability* hostReach = [Reachability reachabilityWithHostName:@"www.baidu.com"];
[hostReach startNotifier];
檢測(cè)某一特定站點(diǎn)的接續(xù)狀況,這里以百度為例,reachabilityChanged方法是當(dāng)網(wǎng)絡(luò)環(huán)境改變時(shí)回調(diào)的函數(shù),實(shí)現(xiàn)類似如下:
//網(wǎng)絡(luò)環(huán)境改變回調(diào)函數(shù)
- (void)reachabilityChanged:(NSNotification *)note
{
Reachability* curReach = [note object];
NSParameterAssert([curReach isKindOfClass: [Reachability class]]);
NetworkStatus status = [curReach currentReachabilityStatus];
switch (status)
{
case NotReachable:
NSLog(@"====當(dāng)前網(wǎng)絡(luò)狀態(tài)不可達(dá)=======");
//其他處理
break;
case ReachableViaWiFi:
NSLog(@"====當(dāng)前網(wǎng)絡(luò)狀態(tài)為Wifi=======");
//其他處理
break;
case kReachableVia2G:
NSLog(@"====當(dāng)前網(wǎng)絡(luò)狀態(tài)為2G=======");
//其他處理
break;
case kReachableVia3G:
NSLog(@"====當(dāng)前網(wǎng)絡(luò)狀態(tài)為3G=======");
//其他處理
break;
case kReachableVia4G:
NSLog(@"====當(dāng)前網(wǎng)絡(luò)狀態(tài)為4G=======");
//其他處理
break;
case ReachableViaWWAN:
NSLog(@"====當(dāng)前網(wǎng)絡(luò)狀態(tài)為WWAN=======");
//其他處理
break;
default:
NSLog(@"你是外星來(lái)的嗎?");
//其他處理
break;
}
}
根據(jù)status判斷當(dāng)前網(wǎng)絡(luò)狀態(tài)變成哪種方式,在“//其他處理”處可加入其他處理代碼。