iOS:如何在發送網絡請求時以前進行網絡判斷

說明:本人是使用AFNetworking進行網絡判斷的.網絡

實現發送網絡請求以前判斷網絡狀態的步驟app

  • 代碼主要寫在Appdelegate.m文件中
  • 步驟一:在Appdelegate.m文件中定義一個全局變量,用於保存網絡狀態
// 定義判斷網絡狀態的全局變量
BOOL whetherHaveNetwork;
  • 步驟二:給全局變量whetherHaveNetwork賦值,即開啓網絡監測
@interface AppDelegate ()
/** 網絡狀態檢查者 */
@property(nonatomic, strong) AFNetworkReachabilityManager *networkMonitorManager;
@end

@implementation AppDelegate

#pragma mark - 懶加載
- (AFNetworkReachabilityManager *)networkMonitorManager {

    if (!_networkMonitorManager) {
        _networkMonitorManager = [AFNetworkReachabilityManager sharedManager];
        [_networkMonitorManager startMonitoring];  //開始監聽
    }
    return _networkMonitorManager;
}


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // 1.建立窗口
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];

    // 2.設置根控制器
    FKTabBarController *tabBarController = [[FKTabBarController alloc] init];
    self.window.rootViewController = tabBarController;


    // 3.設置窗口爲UIApplication的主窗口,而且顯示出來
    [self.window makeKeyAndVisible];


    // 開啓網絡監聽
    [self.networkMonitorManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {

        if (status == AFNetworkReachabilityStatusNotReachable) {// 沒有網絡
            whetherHaveNetwork = NO;
            NSLog(@"沒有網絡:ifHaveNetwork = %d", whetherHaveNetwork);
        }else{// 有網絡
            whetherHaveNetwork = YES;
            NSLog(@"有網絡:ifHaveNetwork = %d", whetherHaveNetwork);
        }
    }];

    return YES;
}
}
  • 步驟三:全局變量whetherHaveNetwork的使用
    在發送網絡請求的.m文件中寫下面一些代碼
// 判斷當前網絡的全局變量
// 建議吧這行代碼放在pch文件中,這樣你就不須要每一個文件都寫一次這行代碼
extern BOOL whetherHaveNetwork;
if (whetherHaveNetwork) {
    // 在這裏發送網絡請求
}

文/IMKel(簡書做者)
原文連接:http://www.jianshu.com/p/e610bd728a53atom

相關文章
相關標籤/搜索