[swift] Reachability를 사용해 네트워크 연결 상태에 따라 서비스 제공 방식 변경하기

네트워크 연결 상태에 따라 앱의 서비스 제공 방식을 동적으로 변경하고 싶다면, Reachability를 사용하여 네트워크 상태를 감지하고 이에 따라 적절한 처리를 할 수 있습니다. Reachability는 iOS에서 네트워크 연결 상태를 모니터링하는 클래스로, 네트워크에 연결되었는지 여부를 감지해줍니다.

Reachability 클래스 사용하기

  1. Reachability 라이브러리를 프로젝트에 추가합니다. Swift Package Manager나 CocoaPods, Carthage 등 여러 방법으로 설치할 수 있습니다.

  2. Reachability를 import 합니다.

import Reachability
  1. Reachability 인스턴스를 생성합니다.
let reachability = try! Reachability()
  1. 본문에서는 네트워크 연결 상태가 변경되면 호출될 콜백 함수를 정의해보겠습니다.
func networkStatusChanged(_ notification: Notification) {
    guard let reachability = notification.object as? Reachability else { return }
    if reachability.connection != .unavailable {
        // 네트워크 연결됨 - 적절한 처리를 수행합니다.
    } else {
        // 네트워크 연결 끊어짐 - 적절한 처리를 수행합니다.
    }
}

// 콜백 함수를 등록합니다.
NotificationCenter.default.addObserver(self, selector: #selector(networkStatusChanged), name: Notification.Name.reachabilityChanged, object: reachability)

위의 코드에서는 networkStatusChanged 함수를 reachabilityChanged Notification을 받는 콜백 함수로 지정하고, 이를 NotificationCenter에 등록했습니다. 이 함수에서는 reachability 객체의 connection 속성을 확인하여 네트워크 연결 상태에 따른 처리를 수행할 수 있습니다.

  1. 앱 실행 중에 네트워크 연결 상태를 모니터링하고 싶다면, 다음과 같이 startNotifier() 메서드를 호출합니다.
try? reachability.startNotifier()
  1. 앱 종료 시에는 반드시 stopNotifier() 메서드를 호출하여 Reachability를 정상적으로 해제해야 합니다.
reachability.stopNotifier()

위의 단계를 따라하면 Reachability를 사용하여 네트워크 연결 상태에 따라 적절한 서비스 제공 방식을 동적으로 변경할 수 있습니다.

참고 자료