美文网首页Swift编程iOSiOS程序猿
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开发之网络监听

    iOS监听网络方式缺点通过状态栏判断一旦状态栏隐藏就会失效AFNetworking中的网络监听模块必须导入该框架,...

  • 监听网络

    ios 注册通知、监听 iOS-OC-监听网络状态,有网时数据自动刷新 iOS实时监控网络状态的改变 简书 iOS...

  • 监听网络状态变化

  • Android 通过注册广播,实时监听网络连接与断开状态的变化

    很多时候我们都需要实时监听网络状态,当网络状态发生变化之后立即通知程序进行不同的操作。监听广播的两种方式:(1)在...

  • iOS融云总结(一)

    iOS使用融云相关用法总结: 1、融云相关配置: 2、监听网络状态变化 3、IMKit消息接收的监听器,在此处可以...

  • uni-app 判断网络

    获取网络类型 方法一 方法二 监听网络状态变化

  • Android网络状态变化监听

    Android网络状态监听实现 功能分析 背景介绍 为了给用户一个好的使用体验,尤其是一些视频、图片类型的app,...

  • Android 判断网络连接状态

    在Android上,我们需要对不同的网络情况做出一些操作。官方提供了监听网络状态变化的广播,用来监听网络的变化情况...

  • iOS App监听网络状态改变

    在App中经常会监听网络的变化,下面是网上经常用到的两种方式 1.Reachability // 处理网络状态改变...

  • Alamofire检测网络变化

    实时检测网络变化 思路分析: 需要一个监听者 需要开始监听 需要有状态变化的回调 需要停止监听 1. 创建监听者 ...

网友评论

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

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