Я пытаюсь использовать NWPathMonitor в своем приложении, но если я отключу подключение к Интернету, он всегда отвечает подключенным. Любое предложение?

Я пытаюсь использовать NWPathMonitor для обнаружения подключения к Интернету. Моя сетевая установка - это просто маршрутизатор, который подключается к мобильной сети 4G, и Mac, подключенный через Ethernet к одному из LAN-портов маршрутизатора. Мой код следующий:

      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)
        
    }
    
}

Я пытаюсь зайти в веб-интерфейс роутера и отключить 4G. Тогда я бы надеялся, что NWPathMonitor обнаружит отсутствие подключения к Интернету и запустит закрытие обновления, снова сообщив об отсутствии Интернета, но этого не происходит. Если я перезапускаю приложение и оставляю 4G отключенным, оно всегда сообщает о наличии подключения к Интернету. Единственный способ позволить моему коду обнаруживать отсутствие интернета - это если я перейду в настройки сети и удалю свой интерфейс Ethernet. В этом случае код правильно сообщает об отсутствии подключения. Должно быть, я упускаю что-то важное. Я надеюсь, что кто-нибудь с большим опытом сможет направить меня в правильном направлении. Спасибо за внимание.

0 ответов

Другие вопросы по тегам