標籤:
可以使用AFN架構中的AFNetworkReachabilityManager來監聽網路狀態的改變,也可以利用蘋果提供的Reachability來監聽。建議在開發中直接使用AFN架構處理。
範例程式碼如下:
-(void)afn{ //1.建立網路狀態監測管理者 AFNetworkReachabilityManager *manger = [AFNetworkReachabilityManager sharedManager]; //2.監聽改變 [manger setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { /* AFNetworkReachabilityStatusUnknown = -1, AFNetworkReachabilityStatusNotReachable = 0, AFNetworkReachabilityStatusReachableViaWWAN = 1, AFNetworkReachabilityStatusReachableViaWiFi = 2, */ switch (status) { case AFNetworkReachabilityStatusUnknown: NSLog(@"未知"); break; case AFNetworkReachabilityStatusNotReachable: NSLog(@"沒有網路"); break; case AFNetworkReachabilityStatusReachableViaWWAN: NSLog(@"3G|4G"); break; case AFNetworkReachabilityStatusReachableViaWiFi: NSLog(@"WiFi"); break; default: break; } }];
Reachablity 是一個iOS下檢測,iOS裝置網路環境用的庫。
蘋果官方提供的Doc,: http://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html
範例程式碼如下:因為Reachablity只能監聽網路狀態的狀況,不能監聽它的改變,所以採用通知的方式
-(void)viewDidLoad{ [super viewDidLoad]; //註冊通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityStatusChange) name:kReachabilityChangedNotification object:nil]; //建立對象 Reachability *r = [Reachability reachabilityForInternetConnection]; [r startNotifier]; self.r = r;}-(void)reachabilityStatusChange{ if ([Reachability reachabilityForInternetConnection].currentReachabilityStatus == ReachableViaWWAN) { NSLog(@"3G|4G"); return; } if ([Reachability reachabilityForLocalWiFi].currentReachabilityStatus == ReachableViaWiFi) { NSLog(@"wifi"); return; } NSLog(@"未知");}-(void)dealloc{ [[NSNotificationCenter defaultCenter]removeObserver:self]; [self.r stopNotifier];}
iOS網路-AFNetworking檢測網路狀態