[swift] Reachability를 사용해 강력한 네트워크 연결 확인 로직 구현하기

앱 개발 중에는 종종 사용자의 장치가 인터넷에 연결되어 있는지 확인해야 할 때가 있습니다. 이를 위해 iOS에서는 Reachability라는 클래스를 제공합니다. Reachability를 사용하면 앱 내부에서 네트워크 상태를 감지하고, 연결 상태 변경에 따른 적절한 조치를 취할 수 있습니다.

Reachability 클래스 가져오기

Reachability 클래스는 별도의 라이브러리를 추가하지 않고도 iOS SDK에 내장되어 있습니다. 따라서 추가적인 설정이 필요하지 않고, 바로 사용할 수 있습니다.

import SystemConfiguration

Reachability 객체 생성하기

네트워크 연결 상태를 확인하기 위해 Reachability 객체를 생성해야 합니다. 보통 Reachability 객체는 싱글톤으로 사용되며, 여러 곳에서 접근하여 네트워크 상태를 확인할 수 있습니다.

let reachability = Reachability()

네트워크 상태 감지

Reachability 클래스를 사용하면 간단하게 네트워크 상태를 감지할 수 있습니다. 예를 들어, 사용자가 인터넷에 연결되어 있는지 확인하려면 다음과 같은 코드를 사용할 수 있습니다.

if reachability?.connection != .unavailable {
    // 인터넷에 연결되어 있음
} else {
    // 인터넷에 연결되어있지 않음
}

네트워크 상태 변경 감지

네트워크 상태가 변경되는 경우를 감지하기 위해 사용자 정의 이벤트 리스너를 등록할 수도 있습니다. 예를 들어, 네트워크 상태가 변경될 때마다 화면을 업데이트하거나 특정 동작을 수행하려면 다음과 같이 NSNotification을 사용할 수 있습니다.

NotificationCenter.default.addObserver(self, selector: #selector(networkStatusChanged), name: .reachabilityChanged, object: nil)
reachability?.startNotifier()

네트워크 상태가 변경되었을 때 호출될 networkStatusChanged 메서드를 작성해야 합니다.

@objc func networkStatusChanged(notification: NSNotification) {
    if reachability?.connection != .unavailable {
        // 인터넷에 연결되어 있음
    } else {
        // 인터넷에 연결되어있지 않음
    }
}

요약

Reachability를 사용하면 강력한 네트워크 연결 확인 로직을 구현할 수 있습니다. 네트워크 상태를 감지하고, 상태 변경을 감지하여 적절한 조치를 취할 수 있습니다. 이를 통해 앱의 사용성을 향상시키고, 사용자 경험을 개선할 수 있습니다.

참고 자료