AFNetworking-检查域的可达性 [英] AFNetworking - Check reachability for a domain

查看:73
本文介绍了AFNetworking-检查域的可达性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用AFNetworking 2.2.1并尝试使用AFNetworkReachabilityManager检查某个域是否可访问,但始终返回NO。也许我没有正确使用此方法,并且希望得到任何指导。

I am using AFNetworking 2.2.1 and trying to use the AFNetworkReachabilityManager to check if a certain domain is reachable, but it always return NO. Maybe I am not using this correctly and would appreciate any pointers.

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

我也尝试了startMonitoring方法(在经理变量声明之后),但是没有运气: / p>

I also tried with the startMonitoring method (after the manager variable declaration), but with no luck:

[manager startMonitoring];

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

As David pointed out, needed to add a status change block to get notified:

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");


推荐答案

AFReachabilityManager 异步完成它的魔术,所以 isReachable 的结果在完成之前是无效的。当 isReachable 的结果有效时,通知最简单的方法是使用 setReachabilityStatusChangeBlock:设置状态更改的块,并在状态不再为 AFNetworkReachabilityStatusUnknown

AFReachabilityManager does it's magic asynchronously, so the results of isReachable aren't valid until it's completed. The easiest way to be notified when the result of isReachable is valid is to use setReachabilityStatusChangeBlock: to set a status changed block, and do whatever is appropriate when the status is no longer AFNetworkReachabilityStatusUnknown

这篇关于AFNetworking-检查域的可达性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆