如何解决当路径变得满意时,为什么NWPathMonitor不提供路径更新?
我有一个名为 NetworkPathMonitor 的简单类,如下所示:
class NetworkPathMonitor: ObservableObject,Cancellable {
@Published var path: NWPath? = nil
let monitor = NWPathMonitor()
init() {
monitor.pathUpdateHandler = { [weak self] path in
dispatchQueue.main.async {
self?.path = path
}
}
monitor.start(queue: dispatchQueue.global(qos: .background))
}
func cancel() {
monitor.cancel()
}
deinit {
cancel()
}
}
尽管在禁用并启用WiFi时调用了pathUpdateHandler
,但结果并不总是可靠的。当我禁用WiFi时,当前路径为unsatisfied (No network route)
,但是当我再次启用WiFi时,它将使用相同的路径pathUpdateHandler
再次调用unsatisfied (No network route)
。
但是,在我的UI中,有一个显示“重试”的按钮。当我按它时,它将破坏当前的监视器并建立一个新的监视器。现在,第一则消息为satisfied (Path is satisfied),interface: en0
。意思是,WiFi可能花费了一些时间来建立网络路由,但是当网络确实可用时,它不再呼叫pathUpdateHandler
。
解决方法
完成的代码可以在真实设备上运行。
请勿在iOS模拟器上测试NWPathMonitor
,因为它不会给您可靠的结果。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。