.. | |||
Sources | 1 year ago | ||
LICENSE | 1 year ago | ||
README.md | 1 year ago |
Reachability.swift is a replacement for Apple's Reachability sample, re-written in Swift with closures.
It is compatible with iOS (8.0 - 12.0), OSX (10.9 - 10.14) and tvOS (9.0 - 12.0)
Inspired by https://github.com/tonymillion/Reachability
Keeping Reachability.swift up-to-date is a time consuming task. Making updates, reviewing pull requests, responding to issues and answering emails all take time.
If you're an iOS developer who's looking for a quick and easy way to create App Store screenshots, please try out my app Screenshot Producer…
Devices | Layout | Copy | Localize | Export |
---|---|---|---|---|
And don't forget to ★ the repo. This increases its visibility and encourages others to contribute.
Thanks Ash
Please read https://github.com/ashleymills/Reachability.swift/blob/master/CONTRIBUTING.md before raising an issue.
Just drop the Reachability.swift file into your project. That's it!
[CocoaPods][] is a dependency manager for Cocoa projects. To install Reachability.swift with CocoaPods:
Make sure CocoaPods is [installed][CocoaPods Installation].
Update your Podfile to include the following:
use_frameworks! pod 'ReachabilitySwift'
Run pod install
.
import Reachability
[Carthage][] is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks. To install Reachability.swift with Carthage:
Install Carthage via [Homebrew][]
$ brew update $ brew install carthage
Add github "ashleymills/Reachability.swift"
to your Cartfile.
Run carthage update
.
Drag Reachability.framework
from the Carthage/Build/iOS/
directory to the Linked Frameworks and Libraries
section of your Xcode project’s General
settings.
Add $(SRCROOT)/Carthage/Build/iOS/Reachability.framework
to Input Files
of Run Script Phase for Carthage.
In your code import Reachability like so: import Reachability
NOTE: All closures are run on the main queue.
//declare this property where it won't go out of scope relative to your listener let reachability = Reachability()! reachability.whenReachable = { reachability in if reachability.connection == .wifi { print("Reachable via WiFi") } else { print("Reachable via Cellular") } } reachability.whenUnreachable = { _ in print("Not reachable") } do { try reachability.startNotifier() } catch { print("Unable to start notifier") }
and for stopping notifications
reachability.stopNotifier()
NOTE: All notifications are delivered on the main queue.
//declare this property where it won't go out of scope relative to your listener let reachability = Reachability()! //declare this inside of viewWillAppear NotificationCenter.default.addObserver(self, selector: #selector(reachabilityChanged(note:)), name: .reachabilityChanged, object: reachability) do{ try reachability.startNotifier() }catch{ print("could not start reachability notifier") }
and
@objc func reachabilityChanged(note: Notification) { let reachability = note.object as! Reachability switch reachability.connection { case .wifi: print("Reachable via WiFi") case .cellular: print("Reachable via Cellular") case .unavailable: print("Network not reachable") } }
and for stopping notifications
reachability.stopNotifier() NotificationCenter.default.removeObserver(self, name: .reachabilityChanged, object: reachability)
Got a bug fix, or a new feature? Create a pull request and go for it!
If you use Reachability.swift, please let me know about your app and I'll put a link here… and tell your friends!
Cheers, Ash