Alamofire - 检测互联网连接

Posted

技术标签:

【中文标题】Alamofire - 检测互联网连接【英文标题】:Alamofire - detect internet connection 【发布时间】:2020-06-23 10:39:35 【问题描述】:

如何检测互联网连接?


我有一个视图控制器,它显示从服务器获取的数据。它是模态的。

如果用户未连接到互联网,我会显示一条消息,要求连接到互联网。否则,我显示数据。

当用户在不离开应用程序的情况下连接到互联网时,如何检测它?我认为可以在 Alamofire 中做到这一点。

我在 viewDidLoadviewWillAppear 中使用了以下代码,但没有调用监听器 - 如果我连接和断开 WIFI,startListening 没有被调用。

    let network = NetworkReachabilityManager()
    network!.startListening  status in
        if status == .reachable(.cellular) || status == .reachable(.ethernetOrWiFi) 
            self.fetchProducts()
         else 
            self.noInternetConnnection()
        
    

仅供参考,您可以在控制中心同时无法使用 WIFI 和移动数据。

【问题讨论】:

“它不起作用”是什么意思,当网络状态发生变化时是否会调用监听器?否则代码块应该可以工作。 @omerfarukozturk 你是对的。我更新了我的问题。 您不应该在发出网络请求之前检查连接性。您应该提出请求并正确处理任何失败。 @JonShier 我只想说非常感谢。我按照你的建议去做。 【参考方案1】:

如果您在函数内声明 network,它可能会在作用域结束后立即被释放。

确保将其存储在实例变量中。

【讨论】:

以上是关于Alamofire - 检测互联网连接的主要内容,如果未能解决你的问题,请参考以下文章

Alamofire 4:检测到没有网络连接

在 Alamofire 4.0 中初始化 SessionManager

安装库 Alamofire 可能出现错误

为啥我无法从 Alamofire 获取请求结果

强制 Alamofire 在主线程上做所有事情?

Alamofire 请求大约需要 10 秒