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

相关文章
相关标签/搜索