美文网首页Swift编程
iOS 监听网络状态变化的方式 NWPathMonitor

iOS 监听网络状态变化的方式 NWPathMonitor

作者: zackzheng | 来源:发表于2024-03-25 11:50 被阅读0次

    iOS 监听网络状态变化有多种方式,iOS 12 之后系统提供了 Network 框架,可以更加方便地监听网络状态变化。

    let monitor = NWPathMonitor()
    monitor.pathUpdateHandler = { path in
    
        DispatchQueue.main.async {
    
            switch path.status {
            case .satisfied: // 已连接
                break
            case .unsatisfied:
                break
            case .requiresConnection:
                break
            }
        }
    }
    let queue = DispatchQueue(label: "Monitor")
    monitor.start(queue: queue)
    

    调用 start 之后,网络状态变化就会调用 pathUpdateHandler。第一次调用后也会立即触发回调。

    @available(macOS 10.14, iOS 12.0, watchOS 5.0, tvOS 12.0, *)
    final public class NWPathMonitor {
    ...
    }
    

    可以看到,NWPathMonitor 需要 iOS 12.0 以上才能调用。

    • status
    public enum Status : Sendable {
    
        /// The path has a usable route upon which to send and receive data
        case satisfied
    
        /// The path does not have a usable route. This may be due to a network interface being down, or due to system policy.
        case unsatisfied
    
        /// The path does not currently have a usable route, but a connection attempt will trigger network attachment.
        case requiresConnection
    }
    

    satisfied 表示可以发送和接收数据;unsatisfied 表示不可用,可能由于网络故障或系统策略等;requiresConnection 表示当前不可用,但是会触发网络连接,一般是第一次启动的时候。

    • 监听某一种网络

    如果想要监听具体某一种网络,可以在初始化时指定。

    let monitor = NWPathMonitor(requiredInterfaceType: .wifi)
    

    可以指定的类型如下:

    public enum InterfaceType : Sendable {
    
        /// A virtual or otherwise unknown interface type
        case other
    
        /// A Wi-Fi link
        case wifi
    
        /// A Cellular link
        case cellular
    
        /// A Wired Ethernet link
        case wiredEthernet
    
        /// The Loopback Interface
        case loopback
    }
    
    • 取消监听

    如果想要取消监听,可以调用 cancel 方法。

    monitor.cancel()
    

    相关文章

      网友评论

        本文标题:iOS 监听网络状态变化的方式 NWPathMonitor

        本文链接:https://www.haomeiwen.com/subject/huvdtjtx.html