[swift] Reachability를 사용해 네트워크 연결 상태에 따른 앱 동작 변경하기

많은 앱에서는 네트워크 연결 상태에 따라 동작을 변경해야 할 때가 있습니다. 예를 들어, 인터넷 연결이 없는 경우에는 오프라인 상태를 표시하거나, 데이터를 로컬에 저장하는 등의 처리를 해야 할 수 있습니다. Swift에서는 Reachability 라이브러리를 사용하여 네트워크 연결 상태를 쉽게 확인하고 앱 동작을 변경할 수 있습니다.

Reachability 라이브러리 설치하기

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

pod 'ReachabilitySwift'

그리고 터미널에서 다음 명령어를 실행해주세요:

pod install

Reachability 라이브러리가 프로젝트에 추가되었습니다.

Reachability 사용하기

Reachability를 사용하기 위해 우선 ReachabilitySwift 모듈을 임포트해야 합니다. 다음과 같이 코드 상단에 추가해주세요:

import ReachabilitySwift

네트워크 상태를 확인하기 위해 Reachability 객체를 생성합니다. 보통은 앱 초기화 단계에서 생성하고, 앱 전체에서 공유하도록 싱글톤으로 만들어 사용합니다. 다음과 같은 코드를 추가해주세요:

let reachability = Reachability()!

이제 reachability 객체를 사용하여 네트워크 상태를 확인할 수 있습니다.

네트워크 연결 상태 변경 감지

네트워크 연결 상태가 변경될 때마다 알리기 위해 NSNotificationCenter를 사용할 수 있습니다. 다음과 같은 코드를 추가해주세요:

// 네트워크 연결 상태 변경 감지 등록
NSNotificationCenter.defaultCenter().addObserver(
    self,
    selector: #selector(networkStatusChanged(_:)),
    name: ReachabilityChangedNotification,
    object: reachability
)

networkStatusChanged(_:) 메서드는 네트워크 연결 상태 변경 시 호출됩니다. 따라서 해당 메서드를 구현해주세요:

func networkStatusChanged(notification: NSNotification) {
    let reachability = notification.object as! Reachability
    
    if reachability.isReachable() {
        // 네트워크 연결됨
    } else {
        // 네트워크 연결 끊김
    }
}

현재 네트워크 연결 상태 확인

네트워크 연결 상태를 언제든지 확인하고 싶다면, 다음과 같은 코드를 사용하세요:

if reachability.isReachable() {
    // 네트워크 연결됨
} else {
    // 네트워크 연결 끊김
}

결론

Reachability 라이브러리를 사용하면 Swift에서 간편하게 네트워크 연결 상태를 확인하고, 앱 동작을 변경할 수 있습니다. 네트워크 연결 상태 변경 감지와 현재 상태 확인 방법을 익히고, 앱에 따라 적절히 활용하시면 됩니다.

참고 자료