四、网络环境判断
1、Reachability 类名
(1)导入Reachability类名
(2)初始化Reachability对象,HostName 尽量用一个比较稳定的网络
(3)添加观察者,接收网络环境发生改变的通知
(4)开始监测
(5)在通知中得到Reachability的对象
2、AFNetWorking中AFNetworkReachabilityManager
(1)导入类库
(2)创建检测对象 类方法sharedManager
(3)开始监测
(4)通过检测对象 获得检测结果 回调方法(setReachabilityStatusChangeBlock:)
#import "AppDelegate.h"
//1、导入类名
#import "Reachability.h"
#pragma mark---AFNetWorkingReachabilityManager--
//一、导入类库
#import "AFNetworking.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//2、创建Reachability对象
//HostName 尽量用一个比较稳定的网站
Reachability *reachability = [Reachability reachabilityWithHostName:@"www.baidu.com"];
//3、添加观察者 接收网络环境变化的通知
//kReachabilityChangedNotification 通知的名字
//NetworkStatus 网络环境的枚举
//-(NSString*)currentReachabilityString网络环境的字符串
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(change:) name:kReachabilityChangedNotificationobject:nil];
//4、开始监测
//-(BOOL)startNotifier; 开始通知监测
//-(void)stopNotifier; 结束通知监测
[reachability startNotifier];
#pragma mark---AFNetWorkingReachabilityManager---
//二、初始化AFNetWorkingReachabilityManager对象
AFNetworkReachabilityManager*reachabilityManager = [AFNetworkReachabilityManager sharedManager];
//三、开始监测
//- (void)startMonitoring;开始监测
//- (void)stopMonitoring;停止监测
[reachabilityManager startMonitoring];
//四、获得监测的网络状态
[reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatusstatus) {
NSString *result = @"";
switch (status) {
case AFNetworkReachabilityStatusUnknown: {
result = @"未知网络";
break;
}
case AFNetworkReachabilityStatusNotReachable: {
result = @"无网络";
break;
}
case AFNetworkReachabilityStatusReachableViaWWAN: {
result = @"蜂窝网络";
break;
}
case AFNetworkReachabilityStatusReachableViaWiFi: {
result = @"无线网";
break;
}
default: {
break;
}
}
NSLog(@"%@",result);
}];
return YES;
}
- (void)change:(NSNotification *)not{
//not.object 得到Reachability对象
//5、得到通知中的Reachability对象 获得网络状态
Reachability *reachability = not.object;
NSLog(@"%@",[reachability currentReachabilityString]);
NSString *status = @"";
switch(reachability.currentReachabilityStatus) {
case NotReachable:
status = @"无发链接网络";
break;
case ReachableViaWWAN:
status = @"移动窝蜂网络WWAN";
break;
case ReachableViaWiFi:
status = @"无线网WIFi";
break;
default:
break;
}
NSLog(@"%@",status);
}
网友评论