NetworkMonitor wraps NWPathMonitor into an Obervable object.
- Swift 5.9+ (Xcode 15+)
- iOS 12.0+, iPadOS 12.0+, macOS 10.15+, tvOS 12.0+, visionOS 1.0+, watchOS 6.0+,
dependencies: [
.package(url: "https://github.com/0xWDG/NetworkMonitor.git", branch: "main"),
],
targets: [
.target(name: "MyTarget", dependencies: [
.product(name: "NetworkMonitor", package: "NetworkMonitor"),
]),
]
- In Xcode, open your project and navigate to File → Swift Packages → Add Package Dependency...
- Paste the repository URL (
https://github.com/0xWDG/NetworkMonitor
) and click Next. - Click Finish.
import SwiftUI
import NetworkMonitor
struct ContentView: View {
@ObservedObject
private var network = NetworkMonitor()
var body: some View {
VStack {
Text("Hello!")
Text("The network status is \(network.isConnected ? "Connected" : "Disconnected")")
Text("You are using a \"\(network.isExpensive ? "Expensive" : "Normal")\" internet connection")
HStack(spacing: 0) {
Text("You are using \"")
switch (network.networkType) {
case .cellular:
Text("Celluar")
case .wifi:
Text("Wifi")
case .loopback:
Text("Loopback")
case .other:
Text("Other")
case .wiredEthernet:
Text("Wired")
default:
Text("Unknown")
}
Text("\" to connect to the internet")
}
}.task {
print(network.nwPath)
}
}
}
🦋 @0xWDG 🐘 mastodon.social/@0xWDG 🐦 @0xWDG 🧵 @0xWDG 🌐 wesleydegroot.nl 🤖 Discord
Interested learning more about Swift? Check out my blog.