Ios7 AFNetworkReachabilityManager说没有网络

Ios7 AFNetworkReachabilityManager说没有网络,ios7,afnetworking-2,Ios7,Afnetworking 2,由于缺少示例,我感到困惑,因此我在appDelegate的didFinishLaunching中这样做: [[AFNetworkReachabilityManager sharedManager] startMonitoring]; bool isThere = [[AFNetworkReachabilityManager sharedManager] isReachable]; 这总是返回false,尽管网络在那里并在工作 两个问题: 1) 如果我不想改变状态,我需要开始监控吗 2) 在阅读

由于缺少示例,我感到困惑,因此我在appDelegate的didFinishLaunching中这样做:

[[AFNetworkReachabilityManager sharedManager] startMonitoring];
bool isThere = [[AFNetworkReachabilityManager sharedManager] isReachable];
这总是返回false,尽管网络在那里并在工作

两个问题:

1) 如果我不想改变状态,我需要开始监控吗


2) 在阅读isReachable之前,你需要做些什么?你需要等吗?

我知道现在回答太晚了。如果有人在找这个

确定网络状态只需要很少的时间。 因此,在开始监视后立即调用isReachable将始终返回false

您可以在setReachibilityStatusChangeBlock中调用isReachable

    [[AFNetworkReachabilityManager sharedManager] startMonitoring];
    [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status){
          NSLog(@"status changed");
         //check for isReachable here
    }];

isReachable由Apple APISCNetworkReachabilityGetFlags完成。这是一个块调用,因此AFN在后台队列中调用它:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0),^{
    SCNetworkReachabilityFlags flags;
    if (SCNetworkReachabilityGetFlags(self.networkReachability, &flags)) {
        AFPostReachabilityStatusChange(flags, callback);
    }
});
如果你尝试,你会立即得到结果。但当然也会引起这样的问题,


嘿,我很晚才发布答案,但当我看到这个问题时,我记得我花了多长时间来获取一个工作代码,以检查网络是否可用,并最终找到了该代码。连接性变量是一个Bool,当被访问时,它将给出瞬时的网络状态,在类中使用此代码块将给出实时的网络状态。希望有人会发现它很有用。 谢谢

此代码块可以在类中用作

    let appDelegate = UIApplication.shared.delegate as! AppDelegate
    appDelegate.initNetworkMonitoring { (status) in
        // make necessary UI updates
    }

很好的解决方案,一点也不晚!很好的解决方案,谢谢
func checkNetworkStatus(completion:@escaping (_ connected:Bool) ->())
{
    let reachability = AFNetworkReachabilityManager.shared()
    reachability.startMonitoring();
    reachability.setReachabilityStatusChange({ (status) -> Void in

        switch(status) {

        case .unknown:
            self.connectivity = false
            completion(false)

        case .notReachable:
            self.connectivity = false
            completion(false)

        case .reachableViaWWAN:
            self.connectivity = true
            completion(true)

        case .reachableViaWiFi:
            self.connectivity = true
            completion(true)
        }
    })
}
    let appDelegate = UIApplication.shared.delegate as! AppDelegate
    appDelegate.initNetworkMonitoring { (status) in
        // make necessary UI updates
    }