为啥网络库无法检测到何时在 Swift Ios 中重新连接了互联网

Posted

技术标签:

【中文标题】为啥网络库无法检测到何时在 Swift Ios 中重新连接了互联网【英文标题】:Why does Network library fails to detect when internet is connected back in Swift Ios为什么网络库无法检测到何时在 Swift Ios 中重新连接了互联网 【发布时间】:2021-05-26 01:45:31 【问题描述】:

我有以下代码来检测我的互联网连接状态

  override func viewDidLoad() 
    super.viewDidLoad()
    internetStatus()
    
    // Do any additional setup after loading the view.
    
 
 func internetStatus()

    let nwPathMonitor = NWPathMonitor()
    nwPathMonitor.start(queue: DispatchQueue(label: "network_monitor"))
    nwPathMonitor.pathUpdateHandler =  path in
       
        if (path.status == .satisfied)
            if (path.usesInterfaceType(.wifi))
                print("wifi")
            
            if (path.usesInterfaceType(.cellular))
                print("cellular")
            
        
        if (path.status == .unsatisfied)
        
            print("noConnection")
        
        if (path.status == .requiresConnection)
            
        
    

这工作正常,但在 ios 模拟器上我无法检测到重新连接。当我断开连接时会打印“noConnection”,但当我连接时会再次打​​印“noConnection”。这是某种错误还是我的代码有问题

【问题讨论】:

“何时连接互联网”? “检测我的互联网连接状态”? 它打印wifi,然后当我断开连接时打印noConnection,然后当我重新连接时再次打印noConnection 对不起,我不明白你的意思 这是行不通的。在我将 myMacBook 更新为 BigSur 之前它运行良好。这可能是问题所在吗?我也尝试了可达性,它是一样的。 【参考方案1】:

所以这在真实设备上运行良好,但在模拟器上它不起作用。我正在使用 macos Big Sur 和 XCode 12.5

【讨论】:

以上是关于为啥网络库无法检测到何时在 Swift Ios 中重新连接了互联网的主要内容,如果未能解决你的问题,请参考以下文章

为啥我无法检测到我使用 UIKit Dynamics 推离屏幕的 UIView 何时不再可见?

如何使用 Swift 检测 iOS 应用程序何时出现在前台? [复制]

如何在 Swift 中检测缩放对地图的影响

检测用户何时点击 SKSpriteNode

为啥某些 Swift 标准库函数在 Playground 中无法识别?

如何检测应用程序何时在后台 Swift 中强制关闭 [重复]