AFNetworking检查网络可用

时间:2016-07-15 03:52:47

标签: ios objective-c afnetworking

我正在使用AFN检查网络。

    __block BOOL connect;

    AFNetworkReachabilityManager*manager = [AFNetworkReachabilityManager sharedManager];
[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
    switch (status) {
        case -1:
            connect=YES;
            break;
        case 0:
            connect=NO;
            break;
        case 1:
            connect=YES;
            break;
        case 2:
            connect=YES;
            break;
        default:
            break;
    }
}];


[manager startMonitoring];

我希望将Bool连接到另一个文件

if (![ValueUtils isConnectNet])

但它没有立即得到bool我怎么能首先得到bool然后做“if else”的事情?

现在我使用Reachability,如果你在startMonitoring之后立即使用AFN的isReachable,它就不能立即获得当前的网络状态。

2 个答案:

答案 0 :(得分:4)

您可以通过以下方式检查可达性:

AFNetworkReachabilityManager *reachability = [AFNetworkReachabilityManager sharedManager];
    [reachability setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
        switch (status) {
            case AFNetworkReachabilityStatusReachableViaWWAN:
                NSLog(@"WWN");
                break;
             case AFNetworkReachabilityStatusReachableViaWiFi:
                NSLog(@"WiFi");
                break;
             case AFNetworkReachabilityStatusUnknown:
                NSLog(@"Unknown");
                break;
                case AFNetworkReachabilityStatusNotReachable:
                NSLog(@"Not Reachable");
                break;
            default:
                break;
        }
    }];

或者您可以使用:

+(BOOL)IsInternet
{
    Reachability *networkReachability = [Reachability reachabilityForInternetConnection];
    NetworkStatus networkStatus = [networkReachability currentReachabilityStatus];
    if (networkStatus == NotReachable)
    {
        return NO;
    }
    else
    {
        return YES;
    }
}

答案 1 :(得分:3)

你只需要这样检查:

if ([[AFNetworkReachabilityManager sharedManager] isReachable]) 
{
    NSLog(@"IS REACHABILE");
} 
else 
{
   NSLog(@"NOT REACHABLE");
}  

不需要为此而服用bool。 AFNetworkReachabilityManager给出网络可达或不可达的响应。