[swift] Reachability를 사용해 앱에서 네트워크 상태 모니터링하기

앱 개발 중에는 네트워크 상태에 따라 다른 동작을 수행해야 할 때가 있습니다. 예를 들면, 인터넷이 연결되지 않은 상태에서는 사용자에게 알림을 표시하거나, 네트워크 요청을 보내는데 실패한 경우 재시도하는 등의 로직을 구현해야 할 수 있습니다.

이렇게 네트워크 상태를 감지하고 모니터링하기 위해 iOS에서는 Reachability라는 클래스를 제공합니다. Reachability 클래스를 사용하면 현재의 네트워크 상태를 실시간으로 확인하고, 연결 상태가 변경될 때마다 콜백을 받을 수 있습니다.

Reachability 클래스 가져오기

Reachability 클래스를 사용하려면 먼저 Reachability.swift 파일을 프로젝트에 추가해야 합니다. Reachability.swift 파일은 여기에서 다운로드할 수 있습니다.

Reachability 객체 생성하기

Reachability 객체를 생성하려면 다음과 같이 코드를 작성합니다.

import Reachability

let reachability = try! Reachability()

위 코드를 사용하면 기본 설정으로 Reachability 객체가 생성됩니다.

네트워크 상태 감지하기

Reachability 객체를 사용해 실시간으로 네트워크 상태를 감지하는 방법은 다음과 같습니다.

reachability.whenReachable = { reachability in
    // 네트워크가 연결된 상태일 때의 동작을 구현
    print("Internet Connection is Available")
}

reachability.whenUnreachable = { reachability in
    // 네트워크 연결이 해제된 상태일 때의 동작을 구현
    print("Internet Connection is Unavailable")
}

do {
    try reachability.startNotifier()
} catch {
    print("Unable to start notifier")
}

위 코드에서 whenReachable 클로저는 네트워크가 연결된 상태일 때 호출되며, whenUnreachable 클로저는 네트워크가 연결이 해제된 상태일 때 호출됩니다. 이곳에 실제로 수행해야 할 동작을 구현하면 됩니다.

네트워크 상태 모니터링 중지하기

네트워크 상태 모니터링을 더 이상 수행하지 않아야 할 때, Reachability 객체를 사용해 모니터링을 중지할 수 있습니다. 다음과 같이 코드를 작성합니다.

reachability.stopNotifier()

결론

Reachability를 사용하면 앱에서 네트워크 상태를 실시간으로 감지하고 모니터링할 수 있습니다. 이를 통해 앱의 네트워크 의존 기능을 보다 안정적으로 관리하고, 사용자에게 적절한 피드백을 제공할 수 있습니다.

더 자세한 사항은 Reachability 클래스의 공식 문서를 참조하시기 바랍니다.