Ios AFNetworking-检查域的可达性
我正在使用AFNetworking 2.2.1,并尝试使用AFNetworkReachabilityManager检查某个域是否可访问,但它始终返回否。可能我没有正确使用此选项,希望您提供任何提示Ios AFNetworking-检查域的可达性,ios,objective-c,afnetworking,Ios,Objective C,Afnetworking,我正在使用AFNetworking 2.2.1,并尝试使用AFNetworkReachabilityManager检查某个域是否可访问,但它始终返回否。可能我没有正确使用此选项,希望您提供任何提示 AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager managerForDomain:@"www.google.com"]; // always returns NO: NSLog([manager isReach
AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager managerForDomain:@"www.google.com"];
// always returns NO:
NSLog([manager isReachable] ? @"YES" : @"NO");
我还尝试了startMonitoring方法(在manager变量声明之后),但没有成功:
[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");
AFReachabilityManager
异步执行它的神奇功能,因此isReachable
的结果在完成之前是无效的。当isReachable
的结果有效时,最简单的通知方式是使用setReachabilityStatusChangeBlock:
设置状态更改块,当状态不再是AFNetworkReachabilityStatusUnknown
时,请执行任何适当的操作。我还使用setReachabilityStatusChangeBlock:,尝试了上述代码,但从未调用过该块。您仍然需要调用startMonitoring。我使用setReachabilityStatusChangeBlock+startMonitoring调用更新了原始帖子,但是这个街区从来没有人叫过。对不起,你说得对。在[manager isReachable]调用之后,我正在调用stopMonitoring方法。。。