iOS 网络监听、判断
一 网络监听
-
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; //开启网络状况的监听 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil]; self.hostReach = [Reachability reachabilityWithHostName:@"www.baidu.com"] ;
[self.hostReach startNotifier]; //开始监听,会启动一个run loop self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
return YES; } //网络链接改变时会调用的方法 -(void)reachabilityChanged:(NSNotification *)note { Reachability *currReach = [note object]; NSParameterAssert([currReach isKindOfClass:[Reachability class]]); //对连接改变做出响应处理动作 NetworkStatus status = [currReach currentReachabilityStatus]; //如果没有连接到网络就弹出提醒实况 self.isReachable = YES; if(status == NotReachable) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"网络连接异常" message:@"暂无法访问书城信息" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil]; [alert show]; [alert release]; self.isReachable = NO; } else { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"网络连接信息" message:@"网络连接正常" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil]; [alert show]; [alert release]; self.isReachable = YES; } } //通过如上代码,在应用程序的任何一个界面都可以使用下面的单例来判断网络是否连接 AppDelegate *appDlg = (AppDelegate *)[[UIApplication sharedApplication] delegate]; if(appDlg.isReachable) { NSLog(@"网络已连接");//执行网络正常时的代码 } else { NSLog(@"网络连接异常");//执行网络异常时的代码 }
二、判断是否有网络
-(BOOL)isExistenceNetwork { BOOL isExistenceNetwork; Reachability *r = [Reachability reachabilityWithHostName:@"http://www.baidu.com"]; switch ([r currentReachabilityStatus]) { case NotReachable://没有网络。 isExistenceNetwork=FALSE; break; case ReachableViaWWAN://没有3G信号。 isExistenceNetwork=TRUE; break; case ReachableViaWiFi://没有wifi。 isExistenceNetwork=TRUE; break; } return isExistenceNetwork; }