iOS 真的检查互联网连接

iOS really check internet connection

我有一个问题 - 我需要检查真正的互联网连接。我现在应该做什么?现在我使用 Reachability class 来检查是否有互联网连接,但在这种情况下我的应用程序崩溃了:我已经连接到机场的 wifi,它是免费的fi 但如果我没有注册我就不能冲浪。但是 Reachability 认为我已经上网 connection.How 我现在使用 Reachability

if(self.internetReachableFoo.isReachable)
{
// We have internet          
}
else
{
//we have no internet
}

所以我的问题是,如何使用 Reachability 或其他工具来检查真实的互联网连接? 谢谢。

您可以尝试连接到您知道始终可用的服务,例如 Google 的 public DNS 服务器。一个简单的 ping 就足够了。

我正在使用这个解决方案:

@implementation SomeClass{

    Reachability* hostReachable;
}

将此添加到您的 viewDidLoad 方法中

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

hostReachable = [Reachability reachabilityWithHostName:@"www.apple.com"];
[hostReachable startNotifier];

还有这个方法:

-(void) checkNetworkStatus:(NSNotification *)notice

{

    NetworkStatus hostStatus = [self.hostReachable currentReachabilityStatus];
    switch (hostStatus)
    {
        case NotReachable:
        {
            NSLog(@"NotReachable");
            break;
        }
        case ReachableViaWiFi:
        {
            NSLog(@"ReachableViaWiFi");
            break;
        }
        case ReachableViaWWAN:
        {
            NSLog(@"ReachableViaWWAN");
            break;
        }
    }
}

如果你不想检查互联网连接,那么你可以使用可达性块

Reachability *reachability = [Reachability reachabilityWithHostname:@"www.google.com"];

reachability.reachableBlock = ^(Reachability *reachability) {
    NSLog(@"Network is reachable.");
};

reachability.unreachableBlock = ^(Reachability *reachability) {
    NSLog(@"Network is unreachable.");
};

// Start Monitoring
[reachability startNotifier];