如何在运行时使用可达性检查 Internet 连接的网络连接更改?

Posted

技术标签:

【中文标题】如何在运行时使用可达性检查 Internet 连接的网络连接更改?【英文标题】:How to check network connectivity changes for internet connection at run time with Reachability? 【发布时间】:2019-03-08 11:44:42 【问题描述】:

我正在使用this lib 来检查可达性

下面是我的示例代码:

override func viewWillAppear(_ animated: Bool) 
    let reachability = Reachability()!
    NotificationCenter.default.addObserver(self, selector: #selector(reachabilityChanged(note:)), name: .reachabilityChanged, object: reachability)
    do
        try reachability.startNotifier()
    catch
        print("could not start reachability notifier")
    
    getUserDetail()

@objc func reachabilityChanged(note: Notification) 
    let reachability = note.object as! Reachability
    switch reachability.connection 
    case .wifi:
        internetConnectionView.isHidden = true
    case .cellular:
        internetConnectionView.isHidden = true
    case .none:
        internetConnectionView.isHidden = false
    

但是当我在运行时打开和关闭 wifi 时,我无法做到这一点。

我不知道我错过了什么。

Here 是我的示例项目。

【问题讨论】:

【参考方案1】:

以前遇到过同样的问题,要解决它你需要声明

let reachability = Reachability()!

viewWillAppear 函数之外,您的代码将如下所示:

let reachability = Reachability()!

override func viewWillAppear(_ animated: Bool) 

    NotificationCenter.default.addObserver(self, selector: #selector(reachabilityChanged(note:)), name: .reachabilityChanged, object: reachability)
    do
        try reachability.startNotifier()
    catch
        print("could not start reachability notifier")
    
    getUserDetail()

【讨论】:

乐于助人.. :)

以上是关于如何在运行时使用可达性检查 Internet 连接的网络连接更改?的主要内容,如果未能解决你的问题,请参考以下文章

在运行方法之前使用可达性检查连接

使用 iOS SDK 检查 Internet 连接 [重复]

我应该啥时候检查互联网连接

如何使程序仅在使用批处理或 powershell 有 Internet 连接时运行? [关闭]

使用 AppDelegate 中的可达性块检查整个应用程序的连接性

始终检查 Cocoa 中的网络可达性