Gavin.han

致力于移动开发 技术改变生活

导航

ios 网络监测之Reachability

Posted on 2013-04-26 10:36  gavin.han  阅读(416)  评论(0编辑  收藏  举报

使用之前请从Apple网站下载示例:点此下载

然后将Reachability.h 和 Reachability.m 加到自己的项目中,并引用 SystemConfiguration.framework,就可以使用了。

效果1:

 

 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    
    //检测网络情况
    [self startNotificationNetwork];
  
    [self.window makeKeyAndVisible];
    return YES;
}

- (void)reachabilityChanged:(NSNotification *)notification{
    Reachability *currentReach = [notification object];
    NSParameterAssert([currentReach isKindOfClass:[Reachability class]]);
    NetworkStatus status = [currentReach currentReachabilityStatus];
    NSString *netMsg = nil;
    switch (status) {
        case NotReachable:
        {
            netMsg = @"网络不可用";
            break;
        }
        case ReachableViaWiFi:
        {
            netMsg = @"通过WiFi上网";
            break;
        }
        case ReachableViaWWAN:
        {
            netMsg = @"通过3G/GPRS上网";
            break;
        }
    }

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"联网提示" message:netMsg delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
    [alert show];
    [alert release];
}


-(void)startNotificationNetwork{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];
    Reachability * hostReach = [[Reachability reachabilityWithHostName:@"www.baidu.com"] retain];
    [hostReach startNotifier];
}

 

致谢:http://www.cnblogs.com/mrhgw/archive/2012/08/01/2617760.html

 效果2:

//处理连接改变后的情况 //对连接改变做出响应的处理动作。
- (void)updateInterfaceWithReachability: (Reachability*) curReach
{
    NetworkStatus status = [curReach currentReachabilityStatus];
    
    if(status ==NotReachable) {
        UIAlertView*alertView = [[UIAlertView alloc]initWithTitle:@"温馨提示"
                                                          message:@"网络连接失败,请检查网络"
                                                         delegate:nil
                                                cancelButtonTitle:@"确定"
                                                otherButtonTitles:nil];
        [alertView show];
        [alertView release];
    }else{
        NSLog(@"connect with the internet successfully");
    }
    
}


 //连接改变
- (void)reachabilityChanged:(NSNotification* )note
{
    Reachability* curReach = [note object];
    NSParameterAssert([curReach isKindOfClass: [Reachability class]]);
    [self updateInterfaceWithReachability: curReach];
}


-(void)startNotificationNetwork{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];
    Reachability * hostReach = [[Reachability reachabilityWithHostName:@"www.baidu.com"] retain];
    [hostReach startNotifier];:
}

致谢:http://blog.sina.com.cn/s/blog_91ff71c001016gql.html