網(wǎng)絡(luò)監(jiān)聽用到的類為Reachability.h,這個Xcode項目里面是不自帶的,需要從github上面下載,在使用的時候記著導(dǎo)入SystemConfiguration.framework。
首先是在AppDelegate.m中設(shè)置網(wǎng)絡(luò)監(jiān)聽
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];
初始化:
_reachability = [Reachability reachabilityForInternetConnection];
[_reachability startNotifier];
[self updateInterfaceWithReachability:_reachability];
實現(xiàn)兩個方法:
- (void) reachabilityChanged: (NSNotification* )note;//網(wǎng)絡(luò)連接改變
- (void) updateInterfaceWithReachability: (Reachability*) curReach;//處理連接改變后的情況
下面是方法的具體實現(xiàn),可根據(jù)情況自行改變:
// 連接改變
- (void) reachabilityChanged: (NSNotification* )note {
Reachability* curReach = [note object];
NSParameterAssert([curReach isKindOfClass: [Reachability class]]);
[self updateInterfaceWithReachability: curReach];
}
//處理連接改變后的情況
- (void) updateInterfaceWithReachability: (Reachability*) curReach {
//對連接改變做出響應(yīng)的處理動作。
NetworkStatus status = [curReach currentReachabilityStatus];
if (status == NotReachable) {
_isReachable = NO;
//沒有連接到網(wǎng)絡(luò)就彈出提實況
UIAlertView *netAlert = [[UIAlertView alloc] initWithTitle:@"蜂窩移動數(shù)據(jù)已關(guān)閉" message:@"啟用蜂窩移動數(shù)據(jù)或無線局域網(wǎng)來訪問數(shù)據(jù)" delegate:nil cancelButtonTitle:@"確定" otherButtonTitles:nil];
[netAlert show];
} else {
_isReachable = YES;
}
}