iOS确实检查互联网连接

时间:2015-01-22 12:06:00

标签: ios reachability

我有一个问题 - 我需要检查真正的互联网连接。我现在应该做什么?现在我使用可达性类检查是否有互联网连接,但我的应用程序在这种情况下崩溃:我已经连接到机场的无线网络,它是免费的无线网络但如果我没有注册,我就无法冲浪。但是可达性认为我已经建立了互联网连接。我现在如何使用可达性

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

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

3 个答案:

答案 0 :(得分:2)

我不想检查互联网连接,然后你可以使用可达性块

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];

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

@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;
        }
    }
}