CI Swift Package Manager

ConnectivityKit

适应网络连接的变化可以实现暂停或恢复网络活动。当进入电梯或通过隧道时,我们的设备通常会完全失去连接。我们也会超出 WiFi 范围并切换到蜂窝网络连接。 Apple 的 Network Framework 包括 NWPathMonitor,它会响应 NWPath 的变化提供更新。 此框架于 2018 年推出,是 SCNetworkReachability 的现代替代品,后者简称为 Reachability API,它不支持现代网络协议(如 WiFi 6 和 5G)所支持的许多功能。

对于仍然支持旧版本操作系统的应用程序,需要使用 Reachability,而大多数用户可以使用 Network Framework。 此软件包会根据操作系统版本自动使用可用的 API。

请参阅:Network.framework 简介

用法

此软件包包含 ConnectivityMonitor,它在内部使用 NetworkMonitorReachabilityMonitor,它们可以简单地作为 AnyConnectivityMonitor 使用。 对于 iOS、macOS、tvOS 和 watchOS 的最新操作系统版本,将使用 NetworkMonitor。 对于早期版本,将使用 ReachabilityMonitor

只需调用 start 函数并提供路径处理程序即可获取更新。 调用 cancel 函数以停止监视。

Combine

ConnectivityObserver 提供对 Combine 的支持,它具有与 ConnectivityMonitor 相同的 startcancel 函数,但它返回 AnyPublisher。 它可用于观察路径更改。

演示应用程序

请参阅 Connectivity 以获取在 macOS 和 iOS 上运行的演示应用程序。

Swift Package

此项目设置为 Swift Package,可以通过 Xcode 的 Swift Package Manager (SPM) 使用。 在您的 Package.swift 中,使用以下代码添加此软件包。

dependencies: [
    .package(url: "https://github.com/brennanMKE/ConnectivityKit", from: "1.0.0"),
],

支持 iOS 10.0 及更高版本

由于此软件包会自动处理实现的选择,因此您的代码只需使用 ConnectivityMonitor 即可获取网络路径的更新。 Reachability API 来自 System Configuration Framework,该框架适用于 Apple 的所有平台,但 watchOS 除外。 ReachabilityMonitor 的实现将在 watchOS 6.0 之前的 watchOS 版本中获得一个空的实现,因为 Network Framework 首次提供给 watchOS 时为 watchOS 6.0。

如果您的任何 Apple 平台的部署目标支持 Network Framework,那么它将始终使用现代实现。 此软件包将允许您在所有平台上使用相同的代码并响应网络连接的变化。