網絡狀態改變的監聽方法
- 通過蘋果蘋果提供的Reachability類來實現監聽
注意 :
- 這個類通常情況下,要想實現持續監聽網絡狀態的改變,需要和通知一起使用
- 只有網絡狀態發生變化的時候才會被調用,所以沒有辦法獲取初始的網絡狀態
//使用蘋果提供的Reachability來檢測網絡狀態,如果要持續監聽網絡狀態的概念,需要結合通知一起使用。
//提供下載地址:
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.拿到一個對象,然后調用開始監聽方法
Reachability *r = [Reachability reachabilityForInternetConnection];
[r startNotifier];
//持有該對象,不要讓該對象釋放掉
self.r = r;
}
//當控制器釋放的時候,移除通知的監聽
-(void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
-(void)networkChange
{
//獲取當前網絡的狀態
if ([Reachability reachabilityForInternetConnection].currentReachabilityStatus == ReachableViaWWAN)
{
NSLog(@"當前網絡狀態為3G");
return;
}
if ([Reachability reachabilityForLocalWiFi].currentReachabilityStatus == ReachableViaWiFi)
{
NSLog(@"當前網絡狀態為wifi");
return;
}
NSLog(@"當前沒有網絡");
}
- 通過使用AFN框架來監聽網絡狀態的改變
注意 : **
通過AFN框架的AFNetworkReachabilityManager
類實現監聽網絡狀態的改變,可以在程序剛啟動的時候就獲取網絡的狀態,并且可以實時監聽網絡狀態的改變**.
-(void)AFNReachability
{
//1.創建網絡監聽管理者
AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
//2.監聽網絡狀態的改變
/*
AFNetworkReachabilityStatusUnknown = 未知
AFNetworkReachabilityStatusNotReachable = 沒有網絡
AFNetworkReachabilityStatusReachableViaWWAN = 3G
AFNetworkReachabilityStatusReachableViaWiFi = WIFI
*/
[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
switch (status) {
case AFNetworkReachabilityStatusUnknown:
NSLog(@"未知");
break;
case AFNetworkReachabilityStatusNotReachable:
NSLog(@"沒有網絡");
break;
case AFNetworkReachabilityStatusReachableViaWWAN:
NSLog(@"3G");
break;
case AFNetworkReachabilityStatusReachableViaWiFi:
NSLog(@"WIFI");
break;
default:
break;
}
}];
//3.開始監聽
[manager startMonitoring];
}
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。