【问题标题】:AFNetworking Reachability not recognizing internet connection for first timeAFNetworking Reachability 首次无法识别互联网连接
【发布时间】:2015-11-17 08:12:13
【问题描述】:

我在这个应用程序的少数视图中使用AFNetworking Reachability。一方面,有一个奇怪的问题。在每个视图中,我已经开始在loadView:[[AFNetworkReachabilityManager sharedManager] startMonitoring] 中进行监控,并在viewDidLoad:if([AFNetworkReachabilityManager sharedManager].isReachable) 中调用isReachable。

每次都返回 NO,就像没有互联网连接一样,我很确定我有稳定的无线连接(在其他视图中工作)。

【问题讨论】:

    标签: ios objective-c iphone afnetworking afnetworking-2


    【解决方案1】:

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

    【讨论】:

    • 在rootViewController的情况下如何实现这个,我只需要检查是否有连接?
    • 你可以把这段代码放在RootViewController的ViewDidLoad方法中。如果调用了 AFNetworkReachabilityStatusNotReachable 或默认情况,则没有网络连接。但在 AppDelegate 中实现这一点将是一种理想的方式。
    【解决方案2】:

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

    还需要一些时间来检查以太网/wifi isReachable

    所以你可以把这段代码:

    [[AFNetworkReachabilityManager sharedManager] startMonitoring];
    

    发送至AppDelegate,并在需要时检查以太网连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-03
      相关资源
      最近更新 更多