我正在尝试使用 NWPathMonitor 来检测互联网连接。我的网络设置只是一个连接到移动 4G 网络的路由器和一个通过以太网连接到路由器 LAN 端口之一的 Mac。我的代码如下:
import Cocoa
import NetworkExtension
@available(macOS 10.14, *)
@objc class ModernInternetMonitor: NSObject {
@objc static let shared: ModernInternetMonitor? = ModernInternetMonitor()
private let monitor = NWPathMonitor()
override private init() {
super.init()
self.startMonitoring()
}
@objc func startMonitoring() {
monitor.pathUpdateHandler = { path in
if path.status == .satisfied {
print("Yay! We have internet!")
} else {
print("Nope! We don't have internet!")
}
}
let queue = DispatchQueue.global(qos: .background)
monitor.start(queue: queue)
}
}
我正在尝试做的是转到路由器Web界面并禁用4G。然后,我希望 NWPathMonitor 能够检测到缺乏互联网连接并再次触发更新关闭报告没有互联网,但这不会发生。如果我重新启动应用程序并断开 4G 连接,它总是报告互联网连接已满足。让我的代码检测到缺乏互联网的唯一方法是,如果我转到网络首选项并删除我的以太网接口。在这种情况下,代码会正确报告缺乏连接。我一定错过了一些重要的事情。我希望有更多专业知识的人能给我带来正确的方向。感谢您的关注。