AFNetworking – 检查域的可达性

我正在使用AFNetworking 2.2.1并试图使用AFNetworkReachabilityManager来检查某个域是否可达,但它总是返回NO。 也许我不正确使用这个,并会感谢任何指针。

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

我也尝试了startMonitoring方法(在pipe理器variables声明之后),但没有运气:

 [manager startMonitoring]; 

编辑:正如大卫指出,需要添加一个状态更改块得到通知:

 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是asynchronous的,所以isReachable的结果在完成之前是无效的。 当isReachable的结果有效时,通知最简单的方法是使用setReachabilityStatusChangeBlock:设置一个状态改变的块,当状态不再是AFNetworkReachabilityStatusUnknown