我正在使用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");
答案 0 :(得分:2)
AFReachabilityManager
异步是神奇的,所以isReachable
的结果在完成之前无效。 isReachable
的结果有效时通知的最简单方法是使用setReachabilityStatusChangeBlock:
设置状态更改块,并在状态不再AFNetworkReachabilityStatusUnknown
时执行任何适当的操作