[swift] Reachability를 사용해 인터넷 연결 상태를 통지하는 방법

앱 개발에 있어서 인터넷 연결 상태를 확인하는 것은 중요합니다. 사용자가 온라인 또는 오프라인 상태인지 알려주는 것은 앱의 사용성을 향상시키는 데 도움이 됩니다. Swift에서는 Reachability 라이브러리를 사용하여 인터넷 연결 상태를 감지할 수 있습니다.

1. Reachability 라이브러리 설치

Reachability 라이브러리를 사용하기 위해서는 먼저 CocoaPods를 사용하여 프로젝트에 추가해야 합니다. Podfile에 아래와 같이 Reachability를 추가하세요.

pod 'ReachabilitySwift'

그리고 터미널에서 pod install 명령어를 실행하여 의존성을 설치합니다.

2. Reachability 클래스 추가

Reachability.swift 파일을 프로젝트에 추가하세요. Reachability.swift 파일은 Reachability 라이브러리에 포함되어 있습니다. 파일을 추가한 후, AppDelegate 클래스 또는 다른 필요한 곳에서 Reachability 객체를 생성합니다.

3. Reachability 사용

Reachability 객체를 사용하여 인터넷 연결 상태를 감지할 수 있습니다. 다음은 Reachability 클래스를 사용하여 인터넷 연결 상태를 통지하는 방법입니다.

import ReachabilitySwift

class ViewController: UIViewController {
    var reachability: Reachability?

    override func viewDidLoad() {
        super.viewDidLoad()

        reachability = Reachability()
        NotificationCenter.default.addObserver(self, selector: #selector(reachabilityChanged(notification:)), name: ReachabilityChangedNotification, object: reachability)
        do {
            try reachability?.startNotifier()
        } catch {
            print("Could not start reachability notifier")
        }
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        updateReachabilityStatus()
    }

    @objc func reachabilityChanged(notification: NSNotification) {
        updateReachabilityStatus()
    }

    func updateReachabilityStatus() {
        if reachability?.isReachable == true {
            if reachability?.isReachableViaWiFi == true {
                print("Connected via WiFi")
            } else {
                print("Connected via cellular data")
            }
        } else {
            print("No internet connection")
        }
    }

    deinit {
        reachability?.stopNotifier()
        NotificationCenter.default.removeObserver(self)
    }
}

위의 코드에서는 Reachability 객체를 생성하고, 앱의 라이프사이클 메소드에서 reachability 객체를 옵저빙하고, 감지된 연결 상태를 업데이트하는 메소드를 구현하였습니다.

이렇게 구현하면 앱의 인터넷 연결 상태가 변경될 때마다 해당 메소드가 호출되고, 적절한 통지를 할 수 있습니다.

더 많은 정보와 예제 코드는 ReachabilitySwift 저장소를 참조하세요.