【问题标题】:Checking for Internet connection does not work检查 Internet 连接不起作用
【发布时间】: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 还是完成处理程序?等等...换句话说:显示一个最小的可重现示例,stackoverflow.com/help/minimal-reproducible-example
  • 我更新了我的问题。请参考。
  • 好的,我明白你在做什么。我假设您在init() 中有:self.monitor = NWPathMonitor(),对吗?

标签: swift internet-connection


【解决方案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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-06
    • 2023-03-31
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    相关资源
    最近更新 更多