[swift] Reachability를 사용해 셀룰러 연결 상태를 감지하는 방법

소개

Reachability는 iOS 애플리케이션에서 인터넷 연결 상태를 확인하는 데 사용되는 도구입니다. 셀룰러 연결이 가능한지 여부를 확인하기 위해 Reachability를 사용할 수 있습니다. 이 글에서는 Swift로 Reachability를 구현하여 셀룰러 연결 상태를 감지하는 방법에 대해 알아보겠습니다.

Reachability 라이브러리 가져오기

먼저 Reachability 라이브러리를 가져와야 합니다. CocoaPods를 사용한다면 Podfile에 다음과 같이 추가합니다:

pod 'ReachabilitySwift'

그리고 터미널에서 pod install 명령을 실행하여 라이브러리를 설치합니다.

CocoaPods를 사용하지 않는다면, Reachability 라이브러리를 직접 다운로드하고 프로젝트에 추가해야 합니다.

Reachability 사용하기

  1. Reachability 라이브러리를 import 합니다:

    import Reachability
    
  2. Reachability 객체를 생성합니다:

    let reachability = try! Reachability()
    
  3. Reachability 객체를 사용하여 셀룰러 연결 상태를 감지합니다:

    switch reachability.connection {
    case .unavailable:
        print("인터넷에 연결되지 않음")
    case .wifi:
        print("Wi-Fi 연결됨")
    case .cellular:
        print("셀룰러 연결됨")
    }
    

    reachability.connection 속성은 현재 연결 상태를 나타내며, .unavailable, .wifi, .cellular 중 하나의 값을 가집니다.

  4. Reachability 객체를 시작하고 연결 상태 변경을 감지합니다:

    reachability.whenReachable = { reachability in
        switch reachability.connection {
        case .wifi:
            print("Wi-Fi 연결됨")
        case .cellular:
            print("셀룰러 연결됨")
        }
    }
       
    reachability.whenUnreachable = { _ in
        print("인터넷에 연결되지 않음")
    }
       
    do {
        try reachability.startNotifier()
    } catch {
        print("Reachability 시작 실패")
    }
    

    whenReachable 클로저는 연결이 가능한 상태로 변경될 때 호출되며, whenUnreachable 클로저는 연결이 불가능한 상태로 변경될 때 호출됩니다.

  5. Reachability 객체를 멈추고 메모리에서 해제합니다:

    reachability.stopNotifier()
    reachability.reachableOnWWAN = false
    

결론

Swift를 사용하여 Reachability를 구현하여 셀룰러 연결 상태를 감지하는 방법에 대해 알아보았습니다. Reachability는 애플리케이션에서 인터넷 연결 상태를 감지하는 데 유용한 도구입니다. 이를 활용하여 사용자에게 네트워크 상태를 알려줄 수 있고, 필요한 작업을 수행할 수 있습니다.

참고 자료