Reachability.swift
Reachability.swift copied to clipboard
Combine example
trafficstars
import Combine
import Reachability
import os
class ReachabilityStore: ObservableObject {
private var reachability: Reachability
@Published var reachable: Bool = false
@Published var reachableViaWifi: Bool = false
@Published var reachableViaCellular: Bool = false
init() {
reachability = try! Reachability()
reachability.whenReachable = { [weak self] reachability in
guard let self = self else { return }
self.reachable = true
self.reachableViaWifi = reachability.connection == .wifi
self.reachableViaCellular = !self.reachableViaWifi
os_log(
"Reachable via %{public}s",
self.reachableViaWifi ? "WiFi" : "Cellular"
)
}
reachability.whenUnreachable = { [weak self] _ in
guard let self = self else { return }
self.reachable = false
self.reachableViaWifi = false
self.reachableViaCellular = false
os_log("Unreachable")
}
do {
try reachability.startNotifier()
} catch {
os_log("Unable to start reachability notifier.")
}
}
}