iosswiftalamofirereachabilitynetwork-connection

How to use NetworkReachabilityManager in Alamofire


I want functionality similar to AFNetworking in Objective-C with Alamofire NetworkReachabilityManager in Swift:

//Reachability detection
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
    switch (status) {
        case AFNetworkReachabilityStatusReachableViaWWAN: {
            [self LoadNoInternetView:NO];
            break;
        }
        case AFNetworkReachabilityStatusReachableViaWiFi: {
            [self LoadNoInternetView:NO];
            break;
        }
        case AFNetworkReachabilityStatusNotReachable: {
            break;
        }
        default: {
            break;
        }
    }
}];

I am currently using the listener to know the status changes with network

let net = NetworkReachabilityManager()
net?.startListening()

Can someone describe how to support those use cases?


Solution

  • I found the answer myself i.e by just writing a listener with closure as mentioned below:

    let net = NetworkReachabilityManager()
    
    net?.listener = { status in
        if net?.isReachable ?? false {
    
        switch status {
    
        case .reachable(.ethernetOrWiFi):
            print("The network is reachable over the WiFi connection")
    
        case .reachable(.wwan):
            print("The network is reachable over the WWAN connection")
    
        case .notReachable:
            print("The network is not reachable")
    
        case .unknown :
            print("It is unknown whether the network is reachable")
    
        }
    }
    
    net?.startListening()