我正在尝试监控 iOS 应用程序的网络访问。
当我第一次在 WiFi 打开的情况下运行模拟器时,我收到正确的消息“我们已连接!”。
但是当我关闭 wifi 时,我收到相同的消息“我们已连接!”。
如果我再次打开它,我会收到“无连接”。信息。
如果我继续打开和关闭网络,我会得到与 wifi 实际状态相反的状态。
有什么想法我做错了什么吗?这是代码:
import Foundation
import Network
final class NetworkMonitor: ObservableObject {
let queue = DispatchQueue(label: "NetworkMonitor")
let monitor = NWPathMonitor()
init() {
monitor.pathUpdateHandler = { path in
if path.status == .satisfied {
print("We're connected!")
} else {
print("No connection.")
}
}
monitor.start(queue: queue)
}
}
Run Code Online (Sandbox Code Playgroud)
@tromgy 是对的,问题中的代码似乎可以在实际设备上运行,但我将在这里发布我的解决方法。
注意:模拟器的环境检查对我来说似乎是可选的,但如果您有不同的意见,请告诉我。
import Foundation
import Network
final class NetworkMonitor: ObservableObject {
static let shared = NetworkMonitor()
let queue = DispatchQueue(label: "NetworkMonitor")
let monitor = NWPathMonitor()
@Published public private(set) var isConnected: Bool = false
private var hasStatus: Bool = false
init() {
monitor.pathUpdateHandler = { path in
#if targetEnvironment(simulator)
if (!self.hasStatus) {
self.isConnected = path.status == .satisfied
self.hasStatus = true
} else {
self.isConnected = !self.isConnected
}
#else
self.isConnected = path.status == .satisfied
#endif
print("isConnected: " + String(self.isConnected))
}
monitor.start(queue: queue)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
860 次 |
| 最近记录: |