Skip to content

Instantly share code, notes, and snippets.

@yashthaker7
Last active May 30, 2022 12:19
Show Gist options
  • Save yashthaker7/c0d7e82b4aec66d5f410becbe32f1eaf to your computer and use it in GitHub Desktop.
Save yashthaker7/c0d7e82b4aec66d5f410becbe32f1eaf to your computer and use it in GitHub Desktop.
//
// NetworkManager.swift
//
//
// Created by SOTSYS138 on 12/05/21.
//
import Alamofire
final class NetworkManager {
static var isReachable: Bool {
return reachabilityManager?.isReachable ?? false
}
private static let reachabilityManager = Alamofire.NetworkReachabilityManager()
static func startReachabilityObserver() {
reachabilityManager?.startListening { status in
switch status {
case .notReachable:
print("not reachable")
NotificationCenter.default.post(name: .networkNotReachable, object: nil)
AlertManager.showNoInternetConnectionAlert()
case .reachable(.cellular):
print("cellular")
NotificationCenter.default.post(name: .networkReachable, object: nil)
AlertManager.hideAlert()
case .reachable(.ethernetOrWiFi):
print("ethernetOrWiFi")
NotificationCenter.default.post(name: .networkReachable, object: nil)
AlertManager.hideAlert()
default:
print("unknown")
}
}
}
static func isReachable(showAlertIfNotReachable: Bool = false) -> Bool {
let reachable = isReachable
if !reachable && showAlertIfNotReachable {
AlertManager.showNoInternetConnectionAlert()
}
return reachable
}
}
extension Notification.Name {
static let networkReachable = Notification.Name(rawValue: "NetworkReachable")
static let networkNotReachable = Notification.Name(rawValue: "NetworkNotReachable")
}
extension UIViewController {
// MARK:- Network Observer
func addNetworkObserver() {
NotificationCenter.default.addObserver(self, selector: #selector(networkNotReachable(_:)), name: .networkNotReachable, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(networkReachable(_:)), name: .networkReachable, object: nil)
}
func removeNetworkObserver() {
NotificationCenter.default.removeObserver(self, name: .networkNotReachable, object: nil)
NotificationCenter.default.removeObserver(self, name: .networkReachable, object: nil)
}
@objc func networkNotReachable(_ notification: Notification) {
}
@objc func networkReachable(_ notification: Notification) {
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment