Ошибка NWPathMonitor при мониторинге интернет-соединения

Я работаю над приложением Swift, где мне нужно знать, когда устройство подключено к Интернету или нет, и для этого я реализовал следующий код.

      import Foundation
import Network

class NetworkMonitor: ObservableObject{
    
    static let shared = NetworkMonitor()
    private let queue = DispatchQueue.global()
    private let monitor: NWPathMonitor
    public private(set)var isConnected :Bool=false
    public private(set)var connectionType :ConnectionType = .unknown
    
    enum ConnectionType{
        case wifi
        case cellular
        case unknown

    }
    
    init(){
        monitor = NWPathMonitor()
    }
    
    public func startMonitoring(){
     
            monitor.pathUpdateHandler={[weak self] path in
                self?.isConnected=path.status == .satisfied
                self?.getConnectionType(path)
            }
        
        monitor.start(queue: queue)

    }
    
    public func stopMonitoring(){
        monitor.cancel()
    }
    public func getConnectionType(_ path: NWPath){
        if(path.usesInterfaceType(.wifi)){
            connectionType = .wifi
        }else if(path.usesInterfaceType(.cellular)){
            connectionType = .cellular
        }else{
            connectionType = .unknown
        }
    }
}

Проблема возникает при вызове функции startMonitoring(). Вроде бы все работает нормально, но я получаю эти сообщения об ошибках в консоли

      
2022-12-01 13:04:37.327650+0100 Luuk[11692:1287784] [] nw_path_evaluator_set_queue Client error: set queue after starting
2022-12-01 13:04:37.328799+0100 Luuk[11692:1287784] [] nw_path_evaluator_set_queue Client error: set queue after starting, dumping backtrace:
        [arm64] libnetcore-2750.120.19.0.1
    0   libnetwork.dylib                    0x0000000181950d4c __nw_create_backtrace_string + 192
    1   libnetwork.dylib                    0x0000000181166f70 nw_path_evaluator_set_queue + 304
    2   libnetwork.dylib                    0x00000001811841f8 nw_path_monitor_set_queue + 96
    3   libswiftNetwork.dylib               0x00000001f0846ee4 $s7Network13NWPathMonitorC5start5queueySo012OS_dispatch_E0C_tF + 72
    4   Luuk                                0x0000000104cfa418 $s4Luuk14NetworkMonitorC15startMonitoringyyF + 216
    5   Luuk                                0x0000000104c7d010 $s4Luuk11SummaryViewV4bodyQrvgyycfU1_yyScMYccfU_ + 56
    6   Luuk                                0x0000000104c137e0 $sIeg_IeyB_TR + 48
    7   libdispatch.dylib                   0x0000000105640c70 _dispatch_call_block_and_release + 32
    8   libdispatch.dylib                   0x00000001056427c0 _dispatch_client_callout + 20
    9   libdispatch.dylib                   0x0000000105652c68 _dispatch_main_queue_drain + 1204
    10  libdispatch.dylib                   0x00000001056527a4 _dispatch_main_queue_callback_4CF + 44
    11  CoreFoundation                      0x00000001803fe800 5198FB57-5645-3B34-A49F-F32B52256CF3 + 333824
    12  CoreFoundation                      0x00000001803b8704 5198FB57-5645-3B34-A49F-F32B52256CF3 + 46852
    13  CoreFoundation                      0x00000001803cbbc8 CFRunLoopRunSpecific + 600
    14  GraphicsServices                    0x000000019c4ff374 GSEventRunModal + 164
    15  UIKitCore                           0x0000000182d3b648 3ED35565-456D-33CB-B554-6C567FA81585 + 5326408
    16  UIKitCore                           0x0000000182abcd90 UIApplicationMain + 364
    17  SwiftUI                             0x000000018821df24 5B6954AE-CE76-34AC-90F9-F7A8DEE0910F + 2359076
    18  SwiftUI                             0x000000018814be08 5B6954AE-CE76-34AC-90F9-F7A8DEE0910F + 1498632
    19  SwiftUI                             0x000000018812d0f4 $s7SwiftUI3AppPAAE4mainyyFZ + 128
    20  Luuk                                0x0000000104ce5318 $s4Luuk0A3AppV5$mainyyFZ + 40
    21  Luuk                                0x0000000104ce53c0 main + 12
    22  dyld                                0x000000010540dce4 start + 520

Я искал в Интернете, но информации об этой ошибке не так много. Любая помощь приветствуется.

Когда я закомментирую строку

              monitor.start(queue: queue)

ошибка исчезает

0 ответов

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