2

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

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

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

这会是什么例子?什么对象需要直接访问实例?

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

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

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

  2. 或者 - 在运行需要连接的实际方法之前,我想使用一种方法来检查是否存在 Internet 连接。

如何以这种方式使用可达性进行设置?

4

1 回答 1

1

在第 4 节中,有一个 Reachability 包装器的示例(但在该实现中,没有 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
    }
}
于 2013-11-13T13:01:39.790 回答