• ios 网络监测之Reachability


    使用之前请从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

  • 相关阅读:
    团队项目冲刺第十天
    gradle文件配置
    idea无Android项目
    php第二次实验报告
    最长回文字串(hdu 3068)
    优先队列实现哈弗曼最小权值
    最小生成树 克鲁斯卡尔(Kruskal)算法求最小生成树
    背包问题------ 分类: ACM 2015-08-03 20:57 1人阅读 评论(0
    Cent Savings (DP) 分类: ACM dp 2015-08-0
    Judging Troubles (multiset查找) 分类: ACM STL
  • 原文地址:https://www.cnblogs.com/hanjun/p/3044283.html
Copyright © 2020-2023  润新知