检查 Internet 连接不起作用

Posted

技术标签:

【中文标题】检查 Internet 连接不起作用【英文标题】:Checking for Internet connection does not work 【发布时间】:2022-01-22 14:54:28 【问题描述】:

我正在尝试检查我的应用中的互联网连接,目前,我有以下代码:

  private let monitor: NWPathMonitor

        monitor.pathUpdateHandler =  [weak self] path in
            print(path.status)
            self?.isConnected = path.status == .satisfied
        

但是,这不起作用。具体来说,打印不会打印出调试控制台中的值。

你能告诉我我做错了什么吗?

谢谢。

【问题讨论】:

您可以尝试删除=,例如monitor.pathUpdateHandler ... 这样做后我得到了很多错误...... 您必须向我们展示更多代码,以便我们为您提供帮助。 monitor 是某种model 吗? pathUpdateHandlervar 还是完成处理程序?等等...换句话说:显示一个最小的可重现示例,***.com/help/minimal-reproducible-example。 我更新了我的问题。请参考。 好的,我明白你在做什么。我假设您在init() 中有:self.monitor = NWPathMonitor(),对吗? 【参考方案1】:

这是适用于我的(SwiftUI,抱歉)测试代码。 您可能可以为您的目的回收一些代码。

import SwiftUI
import Foundation
import Network

@main
struct TestApp: App 
    var body: some Scene 
        WindowGroup 
            ContentView()
        
    


struct ContentView: View 
    let monitor = NWPathMonitor()
    
    var body: some View 
        Text("testing")
            .onAppear 
                let queue = DispatchQueue(label: "monitoring")
                monitor.start(queue: queue)
                monitor.pathUpdateHandler =  path in
                     print(path.status)
                    if path.status == .satisfied 
                        print("-----> YES connected")
                     else 
                        print("-----> NOT connected")
                    
                 
            
    

也可以使用特定的monitor,如let monitor = NWPathMonitor(requiredInterfaceType: .wifi)

【讨论】:

以上是关于检查 Internet 连接不起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用 AFNetworking 检查 Internet 连接状态

在 hive 中使用 Null 检查的左外连接查询不起作用

滚动在 Internet Explorer 中不起作用

占位符属性在 Internet Explorer 中不起作用

为啥 .filter() 在 Internet Explorer 8 中不起作用?

Internet Explorer 保证金自动不起作用