[swift] Reachability를 사용해 인터넷 연결 상태에 따른 동작 제어하기

앱을 개발할 때, 사용자 디바이스의 인터넷 연결 상태에 따라 다른 동작을 수행해야 할 때가 있습니다. 이를 위해 Reachability를 사용할 수 있습니다. Reachability는 네트워크 연결 상태를 파악하고, 인터넷 연결 상태 변화에 따라 알림을 받을 수 있는 라이브러리입니다.

Reachability 설정하기

먼저, Reachability 라이브러리를 프로젝트에 추가해야 합니다. Reachability는 CocoaPods를 이용하여 쉽게 추가할 수 있습니다.

  1. 터미널을 열고 해당 프로젝트의 루트 디렉토리로 이동합니다.
  2. pod init 명령어를 실행하여 Podfile을 생성합니다.
  3. Podfile을 열고, pod 'ReachabilitySwift' 라인을 추가합니다.
  4. 터미널에서 pod install 명령어를 실행하여 ReachabilitySwift를 설치합니다.

Reachability 라이브러리를 추가한 후에는, Reachability를 사용할 클래스에서 Reachability 라이브러리를 import합니다.

import Reachability

Reachability 객체 생성하기

Reachability를 사용하기 위해 Reachability 객체를 생성해야 합니다. 객체를 생성할 때는 기본적으로 hostname 또는 useNowwithAddress 메서드 중 하나를 선택하여 사용합니다.

  1. hostname 사용하기
if let reachability = try? Reachability(hostname: "www.example.com") {
    // reachability 객체를 사용하여 인터넷 연결 상태 파악 및 동작 수행
}
  1. useNowwithAddress 사용하기
if let reachability = try? Reachability() {
    // reachability 객체를 사용하여 인터넷 연결 상태 파악 및 동작 수행
}

Reachability 객체 활용하기

Reachability 객체를 사용하여 현재 인터넷 연결 상태를 파악하고, 연결 상태에 따른 동작을 수행할 수 있습니다. Reachability는 NotificationCenter를 통해 연결 상태 변화를 알려줍니다.

// Reachability 객체에서 NotificationCenter로 알림을 받을 수 있도록 등록합니다.
reachability.whenReachable = { reachability in
    // 인터넷에 연결되었을 때 동작을 수행합니다.
}

reachability.whenUnreachable = { reachability in
    // 인터넷에 연결되지 않았을 때 동작을 수행합니다.
}

// Reachability 객체를 시작합니다.
do {
    try reachability.startNotifier()
} catch {
    print("Unable to start notifier")
}

Reachability 객체 종료하기

Reachability 객체를 사용하지 않을 때는 항상 종료해주어야 합니다. 객체를 종료하기 위해서는 stopNotifier() 메서드를 사용합니다.

reachability.stopNotifier()

위와 같이 Reachability를 사용해 인터넷 연결 상태에 따른 동작을 제어할 수 있습니다. 앱의 사용자 경험을 향상시키기 위해 인터넷 연결 상태를 체크하는 기능을 추가한다면, 네트워크 오류에 따른 사용자 불편을 최소화할 수 있습니다.

참고 자료