[swift] Reachability를 사용해 네트워크 연결 상태가 변화할 때 특정 액션 수행하기

안녕하세요! 이번에는 Swift에서 Reachability를 사용해 네트워크 연결 상태가 변화할 때 특정 액션을 수행하는 방법에 대해 알아보겠습니다.

Reachability란?

Reachability는 iOS 디바이스의 네트워크 연결 상태를 확인하는 라이브러리입니다. 네트워크 연결 상태의 변화를 감지하여, 앱에서 필요한 작업을 수행할 수 있도록 도와줍니다.

Reachability 설치

Reachability를 사용하기 위해 먼저 Reachability 라이브러리를 설치해야 합니다. CocoaPods를 사용한다면 Podfile에 다음과 같이 추가합니다.

pod 'ReachabilitySwift'

설치 후, 터미널에서 pod install 명령어를 실행하여 라이브러리를 가져옵니다.

Reachability 사용하기

Reachability를 사용하기 위해 우선 Reachability 클래스를 임포트합니다.

import Reachability

그리고 Reachability 객체를 생성합니다.

let reachability = try! Reachability()

이제 reachability 객체를 이용하여 네트워크 연결 상태 변화를 감지하고, 그에 따른 작업을 수행할 수 있습니다. 가장 간단한 예시로, 네트워크 연결 상태가 변화하면 콘솔에 메시지를 출력하는 동작을 구현해보겠습니다.

reachability.whenReachable = { reachability in
    if reachability.connection == .wifi {
        print("WiFi에 연결되었습니다.")
    } else {
        print("모바일 데이터에 연결되었습니다.")
    }
}

reachability.whenUnreachable = { _ in
    print("네트워크에 연결되어 있지 않습니다.")
}

do {
    try reachability.startNotifier()
} catch {
    print("Reachability를 시작할 수 없습니다.")
}

위의 코드에서 whenReachable 클로저는 네트워크가 연결될 때 호출되며, whenUnreachable 클로저는 네트워크가 연결되지 않을 때 호출됩니다. 이들 클로저 안에서 필요한 작업을 수행하면 됩니다.

마지막으로, 앱이 종료되거나 더 이상 Reachability를 사용하지 않을 때는 반드시 stopNotifier() 메서드를 호출하여 리소스를 정리해야 합니다.

reachability.stopNotifier()

결론

이번 포스팅에서는 Swift에서 Reachability를 사용해 네트워크 연결 상태가 변화할 때 특정 액션을 수행하는 방법에 대해 알아보았습니다. Reachability를 사용하면 앱이 온라인 또는 오프라인 상태인지를 확인하고, 그에 따른 작업을 수행할 수 있습니다. 다양한 상황에서 유용하게 활용할 수 있으니, 필요한 경우에는 꼭 사용해보세요.

더 자세한 내용은 Reachability 라이브러리 GitHub 저장소에서 확인할 수 있습니다.