[swift] Reachability를 사용해 네트워크 연결 상태가 변경되는 경우 특정 API 호출하기

이번에는 Swift를 사용하여 네트워크 연결 상태가 변경되는 경우 특정 API를 호출하는 방법에 대해 알아보겠습니다. Reachability 라이브러리를 사용하여 현재 네트워크 연결 상태를 감지하고 적절한 조치를 취할 수 있습니다.

Reachability 라이브러리 설치

먼저 Reachability 라이브러리를 설치해야 합니다. Swift Package Manager 또는 CocoaPods를 사용하여 설치할 수 있습니다.

Swift Package Manager를 이용한 설치

  1. Xcode의 프로젝트를 선택합니다.
  2. File -> Swift Packages -> Add Package Dependency를 선택합니다.
  3. 다음 URL을 입력하고 Next를 클릭합니다.
    https://github.com/ashleymills/Reachability.swift
    
  4. Up to Next Major 버전을 선택한 후 Next를 클릭합니다.
  5. 사용할 타겟을 선택한 후 Finish를 클릭합니다.

CocoaPods를 이용한 설치

Podfile에 다음과 같이 Reachability를 추가합니다.

pod 'ReachabilitySwift'

그리고 터미널에서 다음 명령을 실행합니다.

pod install

Reachability 사용하기

Reachability를 사용하려면 먼저 Reachability 객체를 초기화해야 합니다. 이후 네트워크 연결 상태가 변경될 때마다 호출될 콜백 메서드를 정의합니다. 예를 들어, 네트워크 연결 상태가 변경되면 특정 API를 호출하는 코드를 작성해보겠습니다.

import Reachability

class NetworkManager {
    static let shared = NetworkManager()
    
    let reachability = try! Reachability()
    
    func startMonitoringNetwork() {
        NotificationCenter.default.addObserver(self, selector: #selector(networkStatusChanged(_:)), name: .reachabilityChanged, object: nil)
        do {
            try reachability.startNotifier()
        } catch {
            print("Failed to start reachability notifier")
        }
    }
    
    @objc func networkStatusChanged(_ notification: Notification) {
        guard let reachability = notification.object as? Reachability else { return }
        
        if reachability.connection != .unavailable {
            // 네트워크 연결이 가능한 경우에만 특정 API 호출하기
            callAPI()
        }
    }
    
    func callAPI() {
        // 특정 API 호출하는 코드 작성
        print("Calling API...")
    }
}

위의 코드는 NetworkManager 싱글톤 객체를 사용하여 네트워크 연결 상태를 모니터링하고, 네트워크 연결 상태가 변경되면 특정 API를 호출합니다. startMonitoringNetwork() 메서드는 앱이 실행될 때 한 번 호출해야 합니다.

NetworkManager.shared.startMonitoringNetwork()

이제 Reachability를 사용하여 네트워크 연결 상태가 변경되는 경우 특정 API를 호출할 수 있습니다.

참고 자료