0

我已经阅读了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];
4

2 回答 2

1

我的应用就是这样做的——在主线程上向自己发送块中的消息——比如 hostChanged:(BOOL)state。然后,您的 self 类可以维护状态的公共 ivar,或者其他对象可以侦听的通知。

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

请注意,iOS 需要数十秒才能确定状态,因此我的代码在假设 UP 的情况下启动。

于 2013-05-19T13:50:12.960 回答
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......
}

检查网络连接的快速方法。

于 2013-05-19T22:18:56.740 回答