網(wǎng)絡(luò)狀況監(jiān)測(cè)三方庫(kù):Reachability

圖片來(lái)源于網(wǎng)絡(luò)
@property (nonatomic, strong) Reachability *connect;
- (void)viewDidLoad {
//通知 檢測(cè)網(wǎng)絡(luò)狀態(tài)改變
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(netStateChange) name:kReachabilityChangedNotification object:nil];
self.connect = [Reachability reachabilityForInternetConnection]; //單例對(duì)象
[self.connect startNotifier];
}
- (void)netStateChange { //通知檢測(cè)(網(wǎng)絡(luò)改變)的方法
[self checkNetState];
}
- (void)checkNetState {
// 1.檢測(cè)WiFi狀態(tài)
Reachability *wifiConnect = [Reachability reachabilityForLocalWiFi];
// 2.檢測(cè)手機(jī)是否能上網(wǎng)絡(luò)(WiFi\3G\2.5G)
Reachability *connect = [Reachability reachabilityForInternetConnection];
//reachabilityForLocalWiFi、reachabilityForInternetConnection 檢測(cè)的網(wǎng)絡(luò)情況 相同
//0:NotReachable, 1:ReachableViaWWAN, 2:ReachableViaWiFi
NSLog(@"%ld",(long)[wifiConnect currentReachabilityStatus]);
NSLog(@"%ld",(long)[connect currentReachabilityStatus]);
// 3.判斷網(wǎng)絡(luò)狀態(tài)
if ([connect currentReachabilityStatus] == ReachableViaWiFi) {
// 有WiFi
NSLog(@"使用WiFi");
} else if ([connect currentReachabilityStatus] == ReachableViaWWAN) {
// 沒(méi)有使用WiFi, 使用手機(jī)自帶網(wǎng)絡(luò)
NSLog(@"使用手機(jī)自帶網(wǎng)絡(luò),進(jìn)行上網(wǎng)");
} else {
// 沒(méi)有網(wǎng)絡(luò)
NSLog(@"沒(méi)有網(wǎng)絡(luò)");
}
}
// 析構(gòu)方法:移除通知對(duì)象
- (void)dealloc {
[self.connect stopNotifier]; //停止Reachability
[[NSNotificationCenter defaultCenter] removeObserver:self];
}

三方庫(kù)“AFNetworking”的網(wǎng)絡(luò)監(jiān)測(cè):
三方庫(kù)“AFNetworking”的類似功能,對(duì)比:
//AFNetworking監(jiān)測(cè)網(wǎng)絡(luò)狀態(tài) -(void)checkNetStatus { //網(wǎng)絡(luò)監(jiān)控句柄 (單例對(duì)象) AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager]; //要監(jiān)控網(wǎng)絡(luò)連接狀態(tài),必須先調(diào)用單例的startMonitoring方法 [manager startMonitoring]; [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { //status: /** 網(wǎng)絡(luò)狀態(tài) 監(jiān)控 */ //AFNetworkReachabilityStatusUnknown = -1, 未知 //AFNetworkReachabilityStatusNotReachable = 0, 未連接 //AFNetworkReachabilityStatusReachableViaWWAN = 1, 3G //AFNetworkReachabilityStatusReachableViaWiFi = 2, 無(wú)線連接 NSLog(@"%ld", (long)status); }]; }