alecrim/Reachability
A new, clean and lean network interface reachability library written in Swift.
Remarks
Network reachability changes can be monitored using the built-in Combine publisher or an async stream.
While it is possible to create customised instances, a default shared instance is provided.
The native NWPathMonitor is used under the covers to provide the library functionality.
Basic Usage
Simple
import Reachability
if Reachability.shared.currentPath.isReachable {
print("We are online")
} else {
print("No internet")
}SwiftUI
import SwiftUI
import Reachability
struct SomeView: View {
@ObservedObject var reachability = Reachability.shared
var body: some View {
if reachability.currentPath.isReachable {
// Show some data loaded from the internet
} else {
Text("No internet connection")
}
}
}Using Combine
import Reachability
var subscriptions = Set<AnyCancellable>()
Reachability.shared.publisher
.sink { path in
if path.isReachable {
print("We are online")
} else {
print("No internet")
}
}
.store(in: &subscriptions)Using AsyncStream
import Reachability
Task {
for await path in Reachability.shared.stream {
if path.isReachable {
print("We are online")
} else {
print("No internet")
}
}
}Installation
Reachability can be installed using Swift Package Manager, a dependency manager built into Xcode.
While in Xcode, go to File / Swift Packages / Add Package Dependency… and enter the package repository URL https://github.com/Alecrim/Reachability.git, then follow the instructions.
To remove the dependency, select the project and open Swift Packages (next to Build Settings).
Minimum Requirements
| Reachability | Swift | Xcode | Platforms | | ---------------- | --------- | ---------- | ------------------------------------------------ | | Reachability 1.0 | Swift 5.5 | Xcode 13.0 | macOS 10.15 / iOS 13.0 / tvOS 13.0 / watchOS 6.0 |
License
Reachability is available under the MIT license. See the LICENSE file for more info.
Package Metadata
Repository: alecrim/Reachability
Stars: 12
Forks: 1
Open issues: 0
Default branch: main
Primary language: swift
License: MIT
Topics: async, combine, network, reachability, swift, swiftui
README: README.md