在方法运行之前使用Reachability检查连接

时间:2013-11-13 12:07:52

标签: ios ios6 ios7 reachability appdelegate

我想使用Reachability检查我的应用程序中的Internet连接。

我找到a tutorial,在应用程序中进行设置。在教程中,它解释了“步骤4” - 可达性管理器。它提到了以下内容:

  

如果对象需要直接访问可访问性,这将非常有用   单例对象管理的实例。

这是一个什么样的例子?什么对象需要直接访问实例?

在我的应用程序中,我有多种方法需要运行互联网连接。我想要实现的是两种方法之一:

  1. 当互联网连接丢失时显示UIAlertView 用户重试。

    注意:这仅适用于某些视图控制器,而不是通过输出 应用程序,因为我不需要完全限制访问 通过。

  2. 或 - 我想使用一种方法来检查互联网连接 在运行需要的实际方法之前存在 连接。

  3. 如何以这种方式使用Reachability进行设置?

1 个答案:

答案 0 :(得分:1)

在第4部分中有一个可达性包装器的例子(但在该实现中没有kReachabilityChangedNotification处理)。那你该怎么用? - 正如你在MTReachabilityManager的界面中看到的那样,有1种获取管理器单例实例的方法和4种使用它的方法:

+ (BOOL)isReachable;
+ (BOOL)isUnreachable;
+ (BOOL)isReachableViaWWAN;
+ (BOOL)isReachableViaWiFi;

对于您想要连接的方法的第二种方法您必须执行以下操作:

if ([[MTReachabilityManager sharedManager] isReachable]) {
     //do internet
} else {
     //alert 'no internet' or something
}

对于第一种方法(从网络获取数据时连接丢失),这个包装器对你没有帮助(没有实现kReachabilityChangedNotification的监听)。所以你必须添加本教程第3节(第3步:通知)中的代码 - 在调用网络代码之前在某处添加kReachabilityChangedNotification的监听器:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityDidChange:) name:kReachabilityChangedNotification object:nil];

并添加处理通知的方法(当互联网改变状态时将触发):

- (void)reachabilityDidChange:(NSNotification *)notification {
    Reachability *reachability = (Reachability *)[notification object];
    if ([reachability isReachable]) {
        NSLog(@"Reachable");
        //if before there was no internet - now you can do whatever user wants when there was no internet
    } else {
        NSLog(@"Unreachable");
        //alert retry
    }
}