https://github.com/0xwdg/networkmonitor
NetworkMonitor wraps NWPathMonitor into an Obervable object.
https://github.com/0xwdg/networkmonitor
0xwdg networkmonitor nwpathmonitor obervable swift swiftui
Last synced: about 2 months ago
JSON representation
NetworkMonitor wraps NWPathMonitor into an Obervable object.
- Host: GitHub
- URL: https://github.com/0xwdg/networkmonitor
- Owner: 0xWDG
- License: mit
- Created: 2025-01-23T09:19:22.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2025-01-23T09:57:18.000Z (4 months ago)
- Last Synced: 2025-04-13T01:39:00.883Z (about 2 months ago)
- Topics: 0xwdg, networkmonitor, nwpathmonitor, obervable, swift, swiftui
- Language: Swift
- Homepage: https://0xwdg.github.io/NetworkMonitor/
- Size: 291 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
Awesome Lists containing this project
README
# NetworkMonitor
NetworkMonitor wraps NWPathMonitor into an Obervable object.
[](https://swiftpackageindex.com/0xWDG/NetworkMonitor)
[](https://swiftpackageindex.com/0xWDG/NetworkMonitor)
[](https://swift.org/package-manager)
## Requirements
- Swift 5.9+ (Xcode 15+)
- iOS 12.0+, iPadOS 12.0+, macOS 10.15+, tvOS 12.0+, visionOS 1.0+, watchOS 6.0+,## Installation (Pakage.swift)
```swift
dependencies: [
.package(url: "https://github.com/0xWDG/NetworkMonitor.git", branch: "main"),
],
targets: [
.target(name: "MyTarget", dependencies: [
.product(name: "NetworkMonitor", package: "NetworkMonitor"),
]),
]
```## Installation (Xcode)
1. In Xcode, open your project and navigate to **File** โ **Swift Packages** โ **Add Package Dependency...**
2. Paste the repository URL (`https://github.com/0xWDG/NetworkMonitor`) and click **Next**.
3. Click **Finish**.## Usage
```swift
import SwiftUI
import NetworkMonitorstruct 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)
}
}
}
```## Contact
๐ฆ [@0xWDG](https://bsky.app/profile/0xWDG.bsky.social)
๐ [mastodon.social/@0xWDG](https://mastodon.social/@0xWDG)
๐ฆ [@0xWDG](https://x.com/0xWDG)
๐งต [@0xWDG](https://www.threads.net/@0xWDG)
๐ [wesleydegroot.nl](https://wesleydegroot.nl)
๐ค [Discord](https://discordapp.com/users/918438083861573692)Interested learning more about Swift? [Check out my blog](https://wesleydegroot.nl/blog/).