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
并在需要时检查以太网连接。
我在这个应用程序的几个视图中使用 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
并在需要时检查以太网连接。