能夠使用AFN框架中的AFNetworkReachabilityManager來監聽網絡狀態的改變,也能夠利用蘋果提供的Reachability來監聽。建議在開發中直接使用AFN框架處理。
html
示例代碼以下:ios
-(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.htmlapp
-(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]; }