How to get notifications for Network change(Connect,Disconnect,Change)

11,854

Solution 1

Look at this official Apple documentation

Using Reachability you can recognize the type of your connection.

There is also a complete example on how detect the changes and the documentation is updated now for ARC.

I hope this can help you

Solution 2

I followed this tutorial

https://www.youtube.com/watch?v=wDZmz9IsB-8

credit --> Vasil Nunev

Download this class and import to my project --> Reachability.swift

https://github.com/ashleymills/Reachability.swift

(Reachability.swift) --> Unzip -->Sources/Reachability.swift

This is my view controller

import UIKit

class ViewController: UIViewController {

let reachability =  Reachability()!

override func viewDidLoad() {
    super.viewDidLoad()

    reachability.whenReachable = { _ in
        DispatchQueue.main.async {
            self.view.backgroundColor = UIColor.green
        }
    }

    reachability.whenUnreachable = { _ in
        DispatchQueue.main.async {
            self.view.backgroundColor = UIColor.red
        }
    }

    NotificationCenter.default.addObserver(self, selector: #selector(internetChanged), name: Notification.Name.reachabilityChanged , object: reachability)
    do{
        try reachability.startNotifier()
    } catch {
        print("Could not strat notifier")
    }
}

@objc  func internetChanged(note:Notification)  {
    let reachability  =  note.object as! Reachability
    if reachability.isReachable{
        if reachability.isReachableViaWiFi{
            self.view.backgroundColor = UIColor.green
        }
        else{
            DispatchQueue.main.async {
                self.view.backgroundColor = UIColor.orange
            }
        }
    } else{
        DispatchQueue.main.async {
            self.view.backgroundColor = UIColor.red
        }
    }
}
}
Share:
11,854
sathishkumar_kingmaker
Author by

sathishkumar_kingmaker

Updated on June 15, 2022

Comments

  • sathishkumar_kingmaker
    sathishkumar_kingmaker almost 2 years

    In my app I have to alert whenever a network change happens for example when a app is connected or disconnected or changed(wifi to data) network.

    But finding it by reaching a url seems expensive.

    Is there any public api available in iOS to do this.