123456789101112131415161718192021222324252627282930313233343536373839 |
- //
- // Reachability.swift
- // Product Calculator
- //
- // Created by Suraj Kumar Mandal on 16/11/21.
- //
- import Foundation
- import SystemConfiguration
- public class Reachability {
-
- class func isConnectedToNetwork() -> Bool {
-
- var zeroAddress = sockaddr_in()
- zeroAddress.sin_len = UInt8(MemoryLayout<sockaddr_in>.size)
- zeroAddress.sin_family = sa_family_t(AF_INET)
-
- guard let defaultRouteReachability = withUnsafePointer(to: &zeroAddress, {
- $0.withMemoryRebound(to: sockaddr.self, capacity: 1) {
- SCNetworkReachabilityCreateWithAddress(nil, $0)
- }
- }) else {
- return false
- }
-
- var flags: SCNetworkReachabilityFlags = []
- if !SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags) {
- return false
- }
-
- let isReachable = flags.contains(.reachable)
- let needsConnection = flags.contains(.connectionRequired)
-
- return (isReachable && !needsConnection)
-
- }
- }
|