0

我有一个经典的 Apple 可达性类,它不适合 ARC。它很好地定义了网络,但它有一些我无法弄清楚的错误。我保持整个类不变,在另一个类的方法中,我实现了以下方法来定义连接性。这是我的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 不可用时触发。

如何更改它以使其更快地看到 Internet 连接,而不会偶尔出现“无网络”消息?

4

1 回答 1

1

我最终使用了Tony Million的 Reachability 版本。它很棒且易于使用。此外,它还支持 ARC 和 iOS 5(及更高版本)。

你可以在这里得到它:

https://github.com/tonymillion/Reachability

谢谢,托尼!

于 2012-12-24T09:27:08.900 回答