[swift] Reachability를 사용해 특정 호스트에 대한 연결 상태 체크하기

이번 글에서는 Swift에서 Reachability를 사용하여 특정 호스트에 대한 연결 상태를 체크하는 방법에 대해 알아보겠습니다. Reachability는 네트워크 연결 상태를 감지하기 위한 유용한 도구입니다. 이를 사용하여 앱이 인터넷에 연결되어 있는지를 확인할 수 있습니다.

Reachability 클래스 설치

먼저, Reachability 클래스를 설치해야 합니다. Reachability는 Apple에서 제공하는 네트워크 상태 감지 라이브러리입니다. 아래와 같이 CocoaPods를 사용하여 Reachability를 설치할 수 있습니다.

pod 'ReachabilitySwift'

Reachability를 설치하려면 Podfile에 위의 코드를 추가한 후, 터미널에서 pod install을 실행하면 됩니다.

Reachability 사용하기

Reachability를 사용하기 위해서는 먼저 Reachability 클래스를 import해야 합니다.

import ReachabilitySwift

다음은 특정 호스트에 대한 연결 상태를 체크하는 예제 코드입니다.

guard let reachability = Reachability(hostname: "www.example.com") else {
    print("Reachability 생성에 실패했습니다.")
    return
}

reachability.whenReachable = { reachability in
    DispatchQueue.main.async {
        if reachability.isReachableViaWiFi {
            print("WiFi에 연결되었습니다.")
        } else {
            print("셀룰러 네트워크에 연결되었습니다.")
        }
    }
}

reachability.whenUnreachable = { _ in
    DispatchQueue.main.async {
        print("인터넷 연결이 끊어졌습니다.")
    }
}

do {
    try reachability.startNotifier()
} catch {
    print("Reachability를 시작할 수 없습니다.")
}

위의 코드에서는 Reachability 인스턴스를 생성한 후, whenReachable 클로저와 whenUnreachable 클로저를 정의합니다. whenReachable 클로저는 호스트에 연결 가능할 때 호출되며, whenUnreachable 클로저는 호스트에 연결 불가능할 때 호출됩니다.

호스트에 연결 가능한 상태에서는 현재 연결된 네트워크 유형에 따라 해당하는 메시지가 출력됩니다. 호스트에 연결 불가능한 상태에서는 “인터넷 연결이 끊어졌습니다.”라는 메시지가 출력됩니다.

리턴 값으로 Reachability 인스턴스를 얻을 수 없는 경우, Reachability 생성에 실패했다는 메시지가 출력됩니다.

참고 자료