[swift] Reachability를 사용해 네트워크 장애 대응 자동화하기

네트워크 연결 상태를 확인하고, 네트워크 장애에 대응하는 것은 앱 개발에서 중요한 과제입니다. 이를 도와주는 도구로 Apple에서 제공하는 Reachability라는 라이브러리가 있습니다. Reachability는 iOS 기기의 네트워크 연결 상태를 감지하고, 네트워크의 상태 변화에 따라 적절한 대응을 취할 수 있도록 도와줍니다.

Reachability 라이브러리 추가하기

Reachability 라이브러리는 Cocoapods를 통해 간편하게 추가할 수 있습니다. 프로젝트의 Podfile에 다음과 같이 추가해주세요.

pod 'ReachabilitySwift'

그리고 터미널에서 pod install 명령어를 실행하여 라이브러리를 설치합니다.

Reachability 사용하기

Reachability를 사용하기 위해 먼저 Reachability 클래스를 import해야 합니다.

import Reachability

이제 Reachability 객체를 생성하고, 네트워크의 상태 변화를 감지하기 위해 NotificationCenter에 옵서버로 등록합니다.

let reachability = try? Reachability()

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

네트워크의 상태 변화를 감지할 때 호출될 콜백 메서드인 networkStatusChanged 메서드를 구현합니다.

@objc func networkStatusChanged(notification: Notification) {
    guard let reachability = notification.object as? Reachability else { return }

    if reachability.connection == .wifi {
        // Wi-Fi 연결이 가능한 상태일 때의 동작
        print("Wi-Fi 연결 상태")
    } else if reachability.connection == .cellular {
        // 셀룰러 데이터 연결이 가능한 상태일 때의 동작
        print("셀룰러 데이터 연결 상태")
    } else {
        // 네트워크 미연결 상태일 때의 동작
        print("네트워크 미연결 상태")
    }
}

위의 예시 코드에서는 각 네트워크 상태에 따라 적절한 동작을 하도록 구현되어 있습니다. 여기에서는 간단히 콘솔에 해당 상태를 출력하는 예시입니다. 실제 앱에서는 네트워크 상태에 따라 사용자에게 알림을 보여주거나, 데이터 요청을 중지하는 등의 다양한 대응 방식을 적용할 수 있습니다.

정리

Reachability는 iOS 앱에서 네트워크 상태를 감지하고, 네트워크 장애에 대한 대응을 자동화하는 데 도움을 주는 유용한 라이브러리입니다. Reachability를 사용하면 앱의 사용자 경험을 향상시키고, 네트워크 장애로 인한 문제를 사전에 대응할 수 있습니다.