我有一个问题 - 我需要检查真正的互联网连接。我现在应该做什么?现在我使用可达性类检查是否有互联网连接,但我的应用程序在这种情况下崩溃:我已经连接到机场的无线网络,它是免费的无线网络但如果我没有注册,我就无法冲浪。但是可达性认为我已经建立了互联网连接。我现在如何使用可达性?
if(self.internetReachableFoo.isReachable)
{
// We have internet
}
else
{
//we have no internet
}
所以我的问题是,我如何使用可达性或其他工具来检查真实的互联网连接? 感谢。
答案 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;
}
}
}