AFNetworkReachabilityManager *mgr=[AFNetworkReachabilityManager sharedManager];
[mgr startMonitoring];
[mgr setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
//NSLog(@"Reachability: %@", AFStringFromNetworkReachabilityStatus(status));
if ([AFNetworkReachabilityManager sharedManager].reachable) {
NSLog(@" ONLINE");
}
else
{
NSLog(@"OFFLINE");
}
}];
这就是我现在如何通过AFNetworking测试可达性!如何检查特定域的可达性?AFNetworking是如何测试可达性的?
[AFNetworkReachabilityManager managerForDomain: @"www.google.com");
几件事
首先,您应该在开始监视之前配置管理器。在这种情况下,这意味着您应该在调用startMonitoring
之前调用setReachabilityStatusChangeBlock
。
第二,当您使用managerForDomain:
创建新的AFNetworkReachabilityManager
时,您负责管理对象的生命周期。如果您在启用ARC的情况下使用上面的代码,那么一旦mgr
超出作用域,它就会被释放,这意味着没有管理器来监视可达性。一个解决方案是使mgr
成为类的实例变量,例如应用程序委托。
/**创建并返回指定域的网络可达性管理器。
@param domain用于评估网络可达性的域。
@return初始化的网络可达性管理器,主动监视指定的域。*/+ (instancetype)managerForDomain:(NSString *)domain;
这是来自afnetworking的源代码,要监视指定的域,只需使用这个类方法为该域创建一个可达性管理器。像这样
AFNetworkReachabilityManager *mgr= [AFNetworkReachabilityManager managerForDomain:@"www.google.com"];