首页 > 解决方案 > NWPathMonitor 在 Swift 中调用不满意

问题描述

NWPathMonitor用来检测互联网连接何时打开和关闭。当两种状态都发生时,该方法被调用,但是当互联网连接打开时,被调用的状态仍然是.unsatisfied而不是.satisfied. 这是我正在使用的课程:

import Network

protocol NetworkCheckDelegate {
    func statusDidChange(status: NWPath.Status)
}

class NetworkCheck {

    private var monitor = NWPathMonitor()

    private static let _sharedInstance = NetworkCheck()

    var networkCheckDelegate: NetworkCheckDelegate?

    class func sharedInstance() -> NetworkCheck {
        return _sharedInstance
    }

    // Create only one instance of NetworkCheck
    private init() {
        monitor.pathUpdateHandler = { path in
            DispatchQueue.main.async(execute: {
                self.networkCheckDelegate?.statusDidChange(status: path.status)
            })
        }
        monitor.start(queue: DispatchQueue.global(qos: .background))
    }

    func removeMonitoring() {
        monitor.cancel()
    }
}

我的问题是:为什么.unsatisfied在这两种情况下都调用互联网连接

标签: iosswiftnetworkingdetection

解决方案


模拟器无法准确地将网络更改传输到应用程序。

以我的经验,它将是您在启动时运行 Xcode 的设备的网络状态,并且仅当您从有连接(满意)变为没有(不满意)时才更新自身,而不是相反。

由于此限制,您需要在真实设备上测试网络。


推荐阅读