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