Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/alecrim/reachability
A new, clean and lean network interface reachability library written in Swift.
https://github.com/alecrim/reachability
async combine network reachability swift swiftui
Last synced: 3 months ago
JSON representation
A new, clean and lean network interface reachability library written in Swift.
- Host: GitHub
- URL: https://github.com/alecrim/reachability
- Owner: Alecrim
- License: mit
- Created: 2021-11-24T21:04:55.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-06-06T11:43:33.000Z (over 1 year ago)
- Last Synced: 2024-10-10T22:42:05.308Z (3 months ago)
- Topics: async, combine, network, reachability, swift, swiftui
- Language: Swift
- Homepage:
- Size: 14.6 KB
- Stars: 10
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# 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
```swift
import Reachabilityif Reachability.shared.currentPath.isReachable {
print("We are online")
} else {
print("No internet")
}
```### SwiftUI
```swift
import SwiftUI
import Reachabilitystruct SomeView: View {
@ObservedObject var reachability = Reachability.sharedvar body: some View {
if reachability.currentPath.isReachable {
// Show some data loaded from the internet
} else {
Text("No internet connection")
}
}
}
```### Using Combine
```swift
import Reachabilityvar subscriptions = Set()
Reachability.shared.publisher
.sink { path in
if path.isReachable {
print("We are online")
} else {
print("No internet")
}
}
.store(in: &subscriptions)
```### Using AsyncStream
```swift
import ReachabilityTask {
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](https://swift.org/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.