您的位置:首页 > 理论基础 > 计算机网络

iOS:如何在发送网络请求时之前进行网络判断

2016-12-13 00:00 477 查看
说明:本人是使用AFNetworking进行网络判断的.

实现发送网络请求之前判断网络状态的步骤

代码主要写在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/e610bd728a53
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: