AFNetworking Reachability 第一次无法识别互联网连接

AFNetworking Reachability not recognizing internet connection for first time

我在这个应用程序的几个视图中使用 AFNetworking Reachability。一种观点认为,存在奇怪的问题。在每个视图中,我都在 loadView: [[AFNetworkReachabilityManager sharedManager] startMonitoring] 中开始监视,并在 viewDidLoad: if([AFNetworkReachabilityManager sharedManager].isReachable) 中调用 isReachable。

每次,它 returns 不,就像没有互联网连接一样,我很确定我有稳定的无线连接(在另一个视图中工作)。

在 AFNetworking 框架中,startMonitoring 方法在 Background global queue 中运行。

在您的情况下,ViewDidLoad 方法在 startMonitoring 方法完成之前被调用,因为它在不同的队列中 运行。

所以检查 isReachable 标志使用 reachabilityStatusChangeBlock 如下

[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {

    switch (status) {
        case AFNetworkReachabilityStatusNotReachable:
            break;
        case AFNetworkReachabilityStatusReachableViaWiFi:
            break;
        case AFNetworkReachabilityStatusReachableViaWWAN:
            break;
        default:
            NSLog(@"Unkown network status");

    }

}];
[[AFNetworkReachabilityManager sharedManager] startMonitoring];

[AFNetworkReachabilityManager sharedManager]是一个单例,当你第一次调用它时它会被初始化,它会在应用程序运行时运行。

还需要一些时间来检查 ethernet/wifi isReachable.

所以你可以把这个代码:

[[AFNetworkReachabilityManager sharedManager] startMonitoring];

AppDelegate 并在需要时检查以太网连接。