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