无法让 Apple 可达性类正确定义网络



我有一个经典的苹果可及性类,该类不适合弧。它很好地定义了网络,但是有一些我无法弄清楚的错误。我将整个课程保持不变,并且在另一个类的方法中,我实现了以下方法来定义连接性。这是我的 BOOL值,每当互联网可用时会更改:

- (BOOL) checkForInternetConnection {
    [self checkNetworkStatus:nil];
    if (isConnection || is3G) {
        return YES;
    } else {
        return NO;
    }
}

这是标准可达方法:

-(void) checkNetworkStatus:(NSNotification *)notice
{
    NetworkStatus internetStatus = [internetReachable currentReachabilityStatus];
    switch (internetStatus)
    {
        case NotReachable:
        {
            isConnection = NO;
            is3G = NO;
        }
        case ReachableViaWiFi:
        {
            isConnection = YES;
            is3G = NO;
            break;
        }
        case ReachableViaWWAN:
        {
            NSLog(@"Connected via 3G");
            is3G = YES;
            break;
        }
    }
    NetworkStatus hostStatus = [hostReachable currentReachabilityStatus];
    switch (hostStatus)
    {
        case NotReachable:
        {
            isConnection = NO;
            is3G = NO;
            NSLog(@"No Network");
            break;
        }
        case ReachableViaWiFi:
        {
            NSLog(@"Connected via WiFi");
            isConnection = YES;
            is3G = NO;
            break;
        }
        case ReachableViaWWAN:
        {
            NSLog(@"Connected via 3G");
            is3G = YES;
            break;
        }
    }
}

我得到的NSLog输出中看到了我所得到的问题:

2012-12-24 11:19:41.045 Custom Queue[1723:907] Connected via 3G
2012-12-24 11:19:41.046 Custom Queue[1723:907] No Network
2012-12-24 11:19:41.047 Custom Queue[1723:907] Connected via 3G
2012-12-24 11:19:41.048 Custom Queue[1723:907] No Network

几秒钟后,它告诉我一切都很好:

2012-12-24 11:20:11.101 Custom Queue[1723:907] Connected via 3G
2012-12-24 11:20:11.112 Custom Queue[1723:907] Connected via 3G
2012-12-24 11:20:11.113 Custom Queue[1723:907] Connected via 3G

但是,由于它认为主机是无法到达的事实,并传达了一个信息,即没有连接,所以当互联网无法使用时,我还有另一个功能。

我如何更改它,以使Internet连接更快,没有偶尔的"无网络"消息?

我最终使用了托尼百万的可及性版本。它很棒且易于使用。此外,已经准备就绪弧和iOS 5(及向上)。

您可以在这里得到它:

https://github.com/tonymillion/Reachability

谢谢,托尼!

最新更新