如何使用Reachability检查是否存在互联网连接,如果没有,则执行某些操作。 (基本上用作布尔值。)

时间:2013-05-18 20:14:41

标签: ios objective-c reachability

我已经阅读了Reachability页面上的代码,但我不知道如何在if语句类型的场景中使用它。

例如,用户点击刷新按钮,触发refresh方法(去图,嗯?),如果有互联网连接,我想要刷新数据,但如果没有,我想发送没有互联网的通知。

如何通过Reachability实现这样的目标?

我是否只使用如下代码,但根据结果将变量设置为每个块中的值,然后再看一下。这似乎不太优雅,但如果这是唯一的方式,那就这样吧。

// allocate a reachability object
Reachability* reach = [Reachability reachabilityWithHostname:@"www.google.com"];

// set the blocks 
reach.reachableBlock = ^(Reachability*reach)
{
    NSLog(@"REACHABLE!");
};

reach.unreachableBlock = ^(Reachability*reach)
{
    NSLog(@"UNREACHABLE!");
};

// start the notifier which will cause the reachability object to retain itself!
[reach startNotifier];

2 个答案:

答案 0 :(得分:1)

我的应用就是这样 - 在主线程上将块中的消息发送给self - 比如hostChanged:(BOOL)状态。然后,您的自习班可以维护州的公共信息,或者其他对象可以收听的通知。

我的应用程序在app委托中具有此功能,因此其他对象很容易找到它。

请注意,确定状态需要几十秒的时间,所以我的代码在假设UP的情况下启动。

答案 1 :(得分:0)

-(BOOL)NetworkConnectionCheck {
    Reachability *reachability = [Reachability reachabilityForInternetConnection];
    return [reachability isReachable];                                                                                                                                               
}

-(void)viewDidLoad {
if (!self.NetworkConnectionCheck) { // checks active network connection
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"There are no active wifi or data connection!" delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
            [alert show];           
 } else {
       // do your refresh stuff here......
}

快速检查网络连接。