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

네트워크 연결 상태를 확인하고 네트워크 장애 시 적절한 대응을 취하기 위해 Reachability를 사용하는 방법을 알아보겠습니다. Reachability는 애플리케이션에서 현재 네트워크 상태를 모니터링할 수 있는 라이브러리입니다. 이를 통해 네트워크 연결 여부를 확인하고 상황에 맞게 사용자에게 알림을 제공할 수 있습니다.

Reachability 라이브러리 설치

Reachability 라이브러리를 사용하기 위해 먼저 Cocoapods를 설치해야 합니다. Cocoapods가 설치되어 있지 않다면, 터미널을 열고 아래 명령어를 실행하여 Cocoapods를 설치합니다.

$ sudo gem install cocoapods

그리고 프로젝트 폴더에 Podfile 파일을 생성한 후, 아래 내용을 추가합니다.

platform :ios, '10.0'
use_frameworks!

target 'YourProjectName' do
  pod 'ReachabilitySwift'
end

파일을 저장한 후, 터미널에서 프로젝트 폴더로 이동하여 아래 명령어를 실행합니다.

$ pod install

Cocoapods가 ReachabilitySwift 라이브러리를 다운로드하고 프로젝트에 연결합니다.

Reachability 사용하기

  1. ReachabilitySwift 라이브러리를 import 합니다.
import ReachabilitySwift
  1. Reachability 인스턴스를 생성합니다.
let reachability = Reachability()!
  1. 네트워크 연결 상태를 모니터링하기 위해 NotificationCenter에 옵저버를 등록합니다.
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(networkStatusChanged(_:)), name: ReachabilityChangedNotification, object: reachability)
  1. 앱이 실행되거나 화면이 표시될 때 네트워크 상태를 확인하기 위해 Reachability 인스턴스를 시작합니다.
reachability.whenReachable = { reachability in
    // 네트워크 연결됨
}

reachability.whenUnreachable = { reachability in
    // 네트워크 연결이 끊어짐
}

do {
    try reachability.startNotifier()
} catch {
    print("Could not start reachability notifier")
}
  1. Reachability 인스턴스를 재활용하지 않는 경우, NotificationCenter에서 옵저버를 제거합니다.
deinit {
    reachability.stopNotifier()
    NSNotificationCenter.defaultCenter().removeObserver(self, name: ReachabilityChangedNotification, object: reachability)
}

네트워크 상태 감지하기

whenReachable 클로저는 네트워크가 연결된 상태일 때 호출됩니다. 여기에서 네트워크 연결이 확인되면 알림이나 다른 작업을 수행할 수 있습니다.

reachability.whenReachable = { reachability in
    print("네트워크 연결됨")
    // 알림 등을 처리하는 코드 작성
}

whenUnreachable 클로저는 네트워크가 연결되지 않은 상태일 때 호출됩니다. 이 때 네트워크 연결이 끊어졌음을 사용자에게 알릴 수 있습니다.

reachability.whenUnreachable = { reachability in
    print("네트워크 연결이 끊어짐")
    // 사용자에게 알림을 제공하는 코드 작성
}

참고 자료