AFNetworking - 检查域的可达性

时间:2014-05-07 18:46:25

标签: ios objective-c afnetworking

我正在使用AFNetworking 2.2.1并尝试使用AFNetworkReachabilityManager来检查某个域是否可访问,但它始终返回NO。也许我没有正确使用它,并会欣赏任何指针。

AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager managerForDomain:@"www.google.com"];
// always returns NO:
NSLog([manager isReachable] ? @"YES" : @"NO");

我也尝试过使用startMonitoring方法(在经理变量声明之后),但没有运气:

[manager startMonitoring];

编辑:正如David指出的那样,需要添加状态更改块以获得通知:

AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager managerForDomain:@"www.google.com"];
[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status){
    switch (status) {
        case AFNetworkReachabilityStatusReachableViaWWAN:
        case AFNetworkReachabilityStatusReachableViaWiFi:
        case AFNetworkReachabilityStatusNotReachable:
            NSLog(@"Never called");
            break;
        default:
            NSLog(@"Never called");
        break;
    }
}];
[manager startMonitoring];
// always returns NO:
NSLog([manager isReachable] ? @"YES" : @"NO");

1 个答案:

答案 0 :(得分:2)

AFReachabilityManager异步是神奇的,所以isReachable的结果在完成之前无效。 isReachable的结果有效时通知的最简单方法是使用setReachabilityStatusChangeBlock:设置状态更改块,并在状态不再AFNetworkReachabilityStatusUnknown时执行任何适当的操作