使用Alamofire持续检查Internet连接

问题描述 投票:0回答:2

我的应用程序基于TableView,它使用Alamofire从服务器下载一些数据。因此,有必要建立互联网连接以使用我的应用程序,我想连续检查它。我找到了创建这个类的解决方案:

class Connectivity {
class func isConnectedToInternet() -> Bool {
    return NetworkReachabilityManager()!.isReachable
}

}

我在每种方法中添加这些代码行来检查Internet连接

if !Connectivity.isConnectedToInternet() {

        print("No internet connection")
        } else {
            print("connected")
        }

它可以工作,但我不认为这是连续检查连接的正确方法。我想我要使用appDelegate的notificationCenter实现一些观察者,但我不知道怎么做...

swift alamofire internet-connection
2个回答
0
投票

正如Jon Shier和Matt所说,你不应该这样做。事实上,如果您使用Alamofire下载图像,我建议您使用AlamofireImage并使用此代码:

let url = URL(string: yourUrl)!

        cell.yourImage.af_setImage(
            withURL: url,
            placeholderImage: placeholderImage,
            imageTransition: .crossDissolve(0.2),
            runImageTransitionIfCached: false,
            completion: { response in
                if response.result.isSuccess {
                    self.dismissLabel()
                } else if response.error?._code == NSURLErrorNotConnectedToInternet{
                    self.showLabel()
                }
        })

因此,当AlamofireImage在下载图像时检索连接错误时,基本上可以显示标签“No Internet Connection”。相反,如果它成功下载它你解雇标签。


1
投票

不要这样做! Apple多年来一直表示,您绝不应该使用可达性检查作为提出请求的先决条件。相反,您应该发出请求并处理失败,使用可达性来检测连接已重新建立时重试请求。可达性不是100%可靠,现在也被NWPathMonitor类弃用。

© www.soinside.com 2019 - 2024. All rights reserved.