본문 바로가기

개발

iOS Combine 으로 네트워크 체크 로직 만들기

728x90

iOS Combine을 사용한 네트워크 체크 로직 구현

Combine 프레임워크를 사용하여 iOS 앱에서 간편하고 효율적인 네트워크 체크 로직을 구현하는 방법을 살펴보겠습니다.

1. 네트워크 상태 모니터링

  • Network클래스를 사용하여 현재 네트워크 상태를 관찰합니다.
  • reachabilityPublisher속성을 사용하여 네트워크 변경 사항을 Observable로 구독합니다.

2. Combine을 사용한 로직 구현

  • map연산자를 사용하여 네트워크 상태를 원하는 형식으로 변환합니다.
  • flatMap연산자를 사용하여 네트워크 상태 변화에 따라 필요한 작업을 수행합니다.
  • subscribe메서드를 사용하여 Observable을 구독하고 UI 업데이트 또는 기타 작업을 수행합니다.

예시 코드

import SwiftUI

import Combine



struct ContentView: View {

    @State private var isNetworkAvailable = false



    private let disposeBag = DisposeBag()



    var body: some View {

        VStack {

            Text("네트워크 연결 상태: \(isNetworkAvailable ? "연결됨" : "끊김")")



            Button("네트워크 테스트") {

                // 네트워크 테스트 API 호출 등을 수행합니다.

            }

        }

        .onAppear {

            Network.reachabilityPublisher

                .map { $0.status == .reachable }

                .subscribe(on: DispatchQueue.main) { [weak self] isReachable in

                    guard let self = self else { return }

                    self->isNetworkAvailable = isReachable

                }

                .store(in: &self.disposeBag)

        }

    }

}

 

설명:

  • 1. 네트워크 상태 모니터링:
  • 2. Combine을 사용한 로직 구현:

Combine의 장점:

  • 비동기 작업 처리를 간편하게 수행할 수 있습니다.
  • 코드가 명확하고 읽기 쉽습니다.
  • 오류 처리가 용이합니다.

주의 사항:

  • Combine은 비교적 새로운 프레임워크이므로 아직 모든 기능이 완성되지는 않았습니다.
  • Combine을 사용할 때는 SwiftUI와 함께 사용하는 것이 일반적입니다.