[swift] Reachability를 사용해 네트워크 상태 모니터링을 위한 노티피케이션 설정하기

애플리케이션에서 네트워크 상태의 변경을 모니터링하고 싶다면, Reachability를 사용하여 해당 기능을 구현할 수 있습니다. 이를 통해 인터넷 연결이 변경되었을 때 알림을 받거나, 네트워크 환경에 따라 애플리케이션 동작을 다르게 처리할 수 있습니다.

이번 예제에서는 Reachability 라이브러리를 사용하여 네트워크 상태 변경을 감지하고, 해당 상태에 대한 노티피케이션을 설정하는 방법을 알아보겠습니다.

Reachability 라이브러리 가져오기

Reachability 라이브러리는 네트워크 연결 상태를 모니터링하는데 사용할 수 있는 유용한 도구입니다. 우선, Reachability.swift 파일을 프로젝트에 추가해야 합니다. 해당 파일은 GitHub에서 다운로드 받을 수 있습니다.

Reachability 객체 초기화하기

Reachability 객체를 초기화하기 위해 다음과 같이 코드를 작성합니다:

import Reachability

guard let reachability = try? Reachability() else {
    // Reachability 초기화 실패
    return
}

네트워크 상태 변경 감지하기

Reachability 객체를 사용하여 네트워크 상태 변경을 감지할 수 있습니다:

reachability.whenReachable = { reachability in
    // 인터넷 연결 가능 상태
}

reachability.whenUnreachable = { reachability in
    // 인터넷 연결 불가능 상태
}

do {
    try reachability.startNotifier()
} catch {
    print("Reachability 시작 실패")
}

위 코드에서 whenReachable 클로저는 네트워크 상태가 연결 가능할 때 호출되는 코드를 작성하면 됩니다. 마찬가지로, whenUnreachable 클로저는 네트워크 상태가 연결 불가능할 때 호출되는 코드를 작성하면 됩니다.

노티피케이션 설정하기

Reachability 객체를 사용하여 네트워크 상태에 대한 노티피케이션을 설정할 수 있습니다. 예를 들어, 인터넷 연결이 가능하면 Reachable 노티피케이션을 발송하고, 불가능하면 NotReachable 노티피케이션을 발송하는 방법은 다음과 같습니다:

NotificationCenter.default.addObserver(forName: .reachabilityChanged, object: reachability, queue: .main) { notification in
    if reachability.connection == .wifi {
        NotificationCenter.default.post(name: .reachable, object: nil)
    } else {
        NotificationCenter.default.post(name: .notReachable, object: nil)
    }
}

위 코드에서 reachabilityChanged 노티피케이션을 감지하여 네트워크 상태가 변경될 때마다, 해당 상태에 맞는 노티피케이션을 발송하도록 설정합니다.

노티피케이션을 수신하는 코드 작성하기

노티피케이션을 수신하기 위해서는 NotificationCenter를 사용해야 합니다. 예를 들어, Reachable 노티피케이션을 수신하려면 다음과 같이 코드를 작성합니다:

NotificationCenter.default.addObserver(self, selector: #selector(networkStatusChanged), name: .reachable, object: nil)

위 코드에서 networkStatusChanged라는 메서드를 작성하여 Reachable 노티피케이션을 처리할 수 있습니다.

@objc func networkStatusChanged() {
    // 이곳에 상태 변경에 대한 처리 로직을 작성합니다.
}

위와 같이 작성하면, 애플리케이션 내에서 네트워크 상태 변경에 따른 로직을 처리할 수 있습니다.

정리

이제, Reachability를 사용하여 네트워크 상태를 모니터링하고 해당 상태에 대한 노티피케이션을 설정하는 방법을 알게되었습니다. 이를 이용하면 애플리케이션에서 인터넷 연결 상태의 변경을 실시간으로 감지하여 원하는 대로 동작하도록 구현할 수 있습니다.

더 자세한 내용은 Reachability 라이브러리 문서를 참고하십시오.