[swift] Reachability를 사용해 네트워크 연결 상태가 변경되는 경우 로그 남기기

앱에서 네트워크 연결 상태의 변경에 대한 로그를 기록하려면 Reachability라는 유용한 라이브러리를 사용할 수 있습니다. Reachability는 네트워크 연결 상태를 모니터링하여 변경될 때 알림을 받을 수 있도록 도와줍니다.

이 튜토리얼에서는 Reachability 라이브러리를 사용하여 네트워크 연결 상태의 변경을 감지하고, 특정 이벤트가 발생할 때 로그를 남기는 방법에 대해 알아보겠습니다.

Reachability 라이브러리 설치

먼저, Reachability 라이브러리를 설치해야 합니다. 최신 버전의 Xcode에서는 Swift Package Manager를 사용하여 쉽게 설치할 수 있습니다. 프로젝트의 패키지 의존성에 Reachability를 추가하면 됩니다.

  1. Xcode에서 프로젝트를 열고, 왼쪽 네비게이션 패널에서 프로젝트 파일을 선택합니다.
  2. 프로젝트 설정 탭에서 “Swift Packages”를 선택하고 “+” 버튼을 눌러 패키지를 추가합니다.
  3. 패키지 URL 필드에 “https://github.com/ashleymills/Reachability.swift.git”를 입력하고 “Next”를 클릭합니다.
  4. 버전 선택 화면에서 원하는 버전을 선택하고 “Next”를 클릭합니다.
  5. 패키지를 추가할 대상을 선택하고 “Finish”를 클릭합니다.

Reachability 라이브러리가 성공적으로 설치되었습니다.

Reachability 사용하기

이제 Reachability를 사용하여 네트워크 연결 상태를 모니터링하고 변경 사항을 처리할 수 있습니다. 아래 코드를 참고해주세요.

import Reachability

class NetworkManager {
    let reachability = try! Reachability()

    init() {
        // 네트워크 연결 상태 변경을 감지하는 옵저버 등록
        NotificationCenter.default.addObserver(self, selector: #selector(networkStatusChanged), name: .reachabilityChanged, object: reachability)

        do {
            // Reachability 시작
            try reachability.startNotifier()
        } catch {
            print("Could not start reachability notifier")
        }
    }

    @objc func networkStatusChanged(notification: Notification) {
        let reachability = notification.object as! Reachability

        if reachability.connection != .unavailable {
            // 네트워크 연결 상태가 변경됨
            if reachability.connection == .wifi {
                // Wi-Fi 연결 상태
                print("Wi-Fi 연결됨")
            } else if reachability.connection == .cellular {
                // 모바일 데이터 연결 상태
                print("모바일 데이터 연결됨")
            }
        } else {
            // 네트워크 연결 끊김
            print("네트워크 연결 끊김")
        }
    }
}

위의 코드에서는 NetworkManager 클래스를 만들고, 이 클래스의 reachability 속성을 통해 Reachability 인스턴스를 생성합니다. 이 인스턴스는 네트워크 연결 상태의 변경을 감지하기 위해 사용됩니다.

init() 메서드에서는 NotificationCenter를 사용하여 네트워크 연결 상태 변경을 감지하는 옵저버를 등록합니다. reachabilityChanged 라는 이름의 알림을 받으면 networkStatusChanged 메서드가 호출됩니다.

networkStatusChanged 메서드에서는 Reachability 객체의 connection 속성을 확인하여 연결 상태를 판단하고, 각 상태에 따른 로그를 출력합니다.

참고사항

이제 Reachability를 사용하여 네트워크 연결 상태의 변경을 감지하고 로그를 남길 수 있게 되었습니다. 이를 활용하여 앱의 네트워크 요청을 관리하거나, 특정 작업이 네트워크 연결 상태에 따라 다르게 동작하도록 구현할 수 있습니다.