iOS網絡-AFNetworking檢測網絡狀態

能夠使用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

示例代碼以下:
由於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]; }
相關文章
相關標籤/搜索