3

我有一个小问题。我正在使用 Reachability 类来测试互联网连接,它运行良好。但是假设如果用户正在使用 Wifi,但他们无法访问互联网,它应该重试大约 10 秒,然后它应该向用户显示一个警报,让他们切换到那里的蜂窝网络。下面是我的代码。当 Wifi 打开时,我没有指出网络连接速度慢的地方。

self.internetReachable = [Reachability reachabilityForInternetConnection];
[self.internetReachable startNotifier];

//_hasConnectivity = ([self.internetReachable currentReachabilityStatus] != NotReachable);
if([self.internetReachable currentReachabilityStatus] == NotReachable) {
    _hasConnectivity = NO;
}
else if([self.internetReachable currentReachabilityStatus] == ReachableViaWiFi){
    _hasConnectivity = YES;
}
else if([self.internetReachable currentReachabilityStatus] == ReachableViaWWAN) {
    _hasConnectivity = YES;
}
4

1 回答 1

6

尝试使用以下代码返回BOOL值,YES如果连接可用则返回,否则返回NO

- (BOOL)isNetworkAvailable
{
   CFNetDiagnosticRef dReference;        
   dReference = CFNetDiagnosticCreateWithURL (NULL, (__bridge CFURLRef)[NSURL URLWithString:@"www.apple.com"]);

   CFNetDiagnosticStatus status;
   status = CFNetDiagnosticCopyNetworkStatusPassively (dReference, NULL);        

   CFRelease (dReference);

   if ( status == kCFNetDiagnosticConnectionUp )
   {
      NSLog (@"Connection is Available");
      return YES;
   }
   else 
   {
    NSLog (@"Connection is down");
    return NO;
   }
}
于 2013-09-26T14:09:18.990 回答