網(wǎng)絡(luò)狀態(tài)改變的監(jiān)聽方法
- 通過蘋果蘋果提供的Reachability類來實現(xiàn)監(jiān)聽
注意 :
- 這個類通常情況下,要想實現(xiàn)持續(xù)監(jiān)聽網(wǎng)絡(luò)狀態(tài)的改變,需要和通知一起使用
- 只有網(wǎng)絡(luò)狀態(tài)發(fā)生變化的時候才會被調(diào)用,所以沒有辦法獲取初始的網(wǎng)絡(luò)狀態(tài)
//使用蘋果提供的Reachability來檢測網(wǎng)絡(luò)狀態(tài)腹缩,如果要持續(xù)監(jiān)聽網(wǎng)絡(luò)狀態(tài)的概念显蝌,需要結(jié)合通知一起使用霹崎。
//提供下載地址:
https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
//1.注冊一個通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkChange) name:kReachabilityChangedNotification object:nil];
//2.拿到一個對象,然后調(diào)用開始監(jiān)聽方法
Reachability *r = [Reachability reachabilityForInternetConnection];
[r startNotifier];
//持有該對象社裆,不要讓該對象釋放掉
self.r = r;
}
//當(dāng)控制器釋放的時候效览,移除通知的監(jiān)聽
-(void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
-(void)networkChange
{
//獲取當(dāng)前網(wǎng)絡(luò)的狀態(tài)
if ([Reachability reachabilityForInternetConnection].currentReachabilityStatus == ReachableViaWWAN)
{
NSLog(@"當(dāng)前網(wǎng)絡(luò)狀態(tài)為3G");
return;
}
if ([Reachability reachabilityForLocalWiFi].currentReachabilityStatus == ReachableViaWiFi)
{
NSLog(@"當(dāng)前網(wǎng)絡(luò)狀態(tài)為wifi");
return;
}
NSLog(@"當(dāng)前沒有網(wǎng)絡(luò)");
}
- 通過使用AFN框架來監(jiān)聽網(wǎng)絡(luò)狀態(tài)的改變
注意 : **
通過AFN框架的AFNetworkReachabilityManager
類實現(xiàn)監(jiān)聽網(wǎng)絡(luò)狀態(tài)的改變,可以在程序剛啟動的時候就獲取網(wǎng)絡(luò)的狀態(tài),并且可以實時監(jiān)聽網(wǎng)絡(luò)狀態(tài)的改變**.
-(void)AFNReachability
{
//1.創(chuàng)建網(wǎng)絡(luò)監(jiān)聽管理者
AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
//2.監(jiān)聽網(wǎng)絡(luò)狀態(tài)的改變
/*
AFNetworkReachabilityStatusUnknown = 未知
AFNetworkReachabilityStatusNotReachable = 沒有網(wǎng)絡(luò)
AFNetworkReachabilityStatusReachableViaWWAN = 3G
AFNetworkReachabilityStatusReachableViaWiFi = WIFI
*/
[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
switch (status) {
case AFNetworkReachabilityStatusUnknown:
NSLog(@"未知");
break;
case AFNetworkReachabilityStatusNotReachable:
NSLog(@"沒有網(wǎng)絡(luò)");
break;
case AFNetworkReachabilityStatusReachableViaWWAN:
NSLog(@"3G");
break;
case AFNetworkReachabilityStatusReachableViaWiFi:
NSLog(@"WIFI");
break;
default:
break;
}
}];
//3.開始監(jiān)聽
[manager startMonitoring];
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者