IOS监听网络的变化状况以及是否已连接可用的网络

2016-08-08  本文已影响2466人  mqhong

2016年08月08日星期一


网上的基本解决方案,大部分是这样。


    NSString *urlStr = @"www.baidu.com";
    Reachability *netConnect = [Reachability reachabilityWithHostName:urlStr];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];
    [netConnect startNotifier];

    //然后监听reachabilityChanged:方法,网络状态一发生改变就获取改变事件。

// 通知监听的事件
-(void)reachabilityChanged:(NSNotification *)note{
    //设置了缓冲区,在1秒内多次触发这个函数 将会只执行最后一次,妈的,这里有时候一次要调用两下。
    //取消的函数 必须要和 传入的函数 带的值一样
    [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(updateInterfaceWithReachability) object:nil];
    [self performSelector:@selector(updateInterfaceWithReachability) withObject:nil afterDelay:1];
    
}
//网络连接该干活了
-(void)updateInterfaceWithReachability{

    NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
    // 创建请求(requset)
    NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:2];//缓存策略:基础策略,超时设置:10秒
    // 连接服务器
    self.connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];
    
}
//出现错误
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    NSLog(@"连接出错,判定为没有网");
}
//接收到反馈信息
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    NSLog(@"收到百度的回应,判定为有网");
}


上一篇 下一篇

猜你喜欢

热点阅读