IOS监听网络状态
手机网络状态包括:
3G网络:使用流量。
wifi: 无线网,免费。
应用中监听网络状态的方式
苹果提供的方式:Reachability
使用步骤:添加系统框架:systemConfiguration.framework
添加源代码:[link https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip](https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip)
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];
self.reachablity = [Reachability reachabilityForInternetConnection];
[self.reachablity startNotifier];
Reachability *wifi = [Reachability reachabilityForLocalWiFi];
NetworkStatus wifistate = wifi.currentReachabilityStatus;
if (wifistate != NotReachable) {
NSLog(@"是WI-FI");
}
}
-(void)dealloc{
[self.reachablity stopNotifier];
[[NSNotificationCenter defaultCenter]removeObserver:self];
}
- (void)reachabilityChanged:(NSNotification*)not{
NSLog(@"网络状态发生了改变");
[self checkNetworkState];
}
- (void)checkNetworkState{
if ([[Reachability reachabilityForLocalWiFi] currentReachabilityStatus] != NotReachable) {
NSLog(@"wifi-环境");
} else if([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] != NotReachable){
NSLog(@"3G网络");
}else{
NSLog(@"没有网络");
}
}
AFNetWorking方式
AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
switch (status) {
case AFNetworkReachabilityStatusReachableViaWiFi:
NSLog(@"wifi");
break;
case AFNetworkReachabilityStatusNotReachable:
NSLog(@"无网络");
break;
case AFNetworkReachabilityStatusReachableViaWWAN:
NSLog(@"手机网络");
break;
case AFNetworkReachabilityStatusUnknown:
NSLog(@"未知网络");
break;
default:
break;
}
}];