[swift] Reachability를 사용해 네트워크 연결 상태를 나타내는 UI 업데이트하기

네트워크 연결 상태가 중요한 앱을 개발할 때, 사용자에게 연결 상태를 시각적으로 알려주는 것은 매우 중요합니다. 이를 위해 Apple은 Reachability라는 클래스를 제공하고 있습니다. Reachability를 사용하면 앱에서 현재의 네트워크 연결 상태를 감지하고, 이를 기반으로 UI를 업데이트할 수 있습니다.

Reachability 클래스 가져오기

Reachability 클래스를 사용하기 위해서는 먼저 Reachability.swift 파일을 프로젝트에 추가해야 합니다. Reachability.swift는 Apple의 Reachability sample 프로젝트에서 가져올 수 있습니다. 여기에서 Reachability.swift를 다운로드 받으세요.

다운로드 받은 Reachability.swift 파일을 Xcode 프로젝트의 적절한 위치에 추가한 후, 프로젝트에 파일을 추가해주세요.

Reachability 클래스 사용 예제

Reachability를 사용하여 네트워크 연결 상태를 감지하는 예제를 살펴보겠습니다. 먼저 Reachability 객체를 생성하고, 네트워크 연결 상태 변화를 감지하는 리스너를 등록합니다.

import Reachability

class ViewController: UIViewController {
    var reachability: Reachability!

    override func viewDidLoad() {
        super.viewDidLoad()

        // Reachability 객체 생성
        reachability = try! Reachability()

        // 네트워크 연결 상태 변경을 감지하는 리스너 등록
        NotificationCenter.default.addObserver(self, selector: #selector(networkStatusChanged), name: .reachabilityChanged, object: reachability)
        
        do {
            // 리스너가 등록되고 연결 상태를 감지할 준비를 완료
            try reachability.startNotifier()
        } catch {
            print("Cannot start reachability notifier")
        }
    }

    @objc func networkStatusChanged() {
        if reachability.connection != .unavailable {
            // 네트워크 연결이 가능한 상태일 때 UI 업데이트
            updateUIForNetworkConnected()
        } else {
            // 네트워크 연결이 불가능한 상태일 때 UI 업데이트
            updateUIForNetworkDisconnected()
        }
    }
    
    func updateUIForNetworkConnected() {
        // 네트워크 연결이 가능한 상태일 때 UI를 업데이트하는 로직 추가
    }
    
    func updateUIForNetworkDisconnected() {
        // 네트워크 연결이 불가능한 상태일 때 UI를 업데이트하는 로직 추가
    }
}

위의 예제에서는 viewDidLoad 메서드에서 Reachability 객체를 생성하고, 네트워크 상태 변화를 감지하는 리스너를 등록합니다. networkStatusChanged 메서드를 통해 네트워크 연결 상태가 변경될 때마다 적절한 UI 업데이트를 수행합니다.

참고 자료