如何通过AFNetworking设置特定域的可达性测试


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"];

最新更新