Network Monitor SwiftUI, 네트워크 모니터링

John Jeonguk Hur·2023년 3월 23일
0
  • NWPathMonitor는 min iOS 12.0부터 지원
    12.0 미만은 다른것 사용

진행중인 프로젝트에 Network 연결이 실패되었을 때, 네트워크 재연결하는 알림 문구 구현하기.

1. 네트워크 상태 관리자 클래스 구현

class Network: ObservableObject {
    let monitor = NWPathMonitor()
    let queue = DispatchQueue(label: "Monitor")
    @Published private(set) var connected: Bool = false
    
    func checkConnection() {
        monitor.start(queue: queue)
        monitor.pathUpdateHandler = { [weak self] path in
            DispatchQueue.main.async {
            	// 네트워크가 연결되어있다면 connected에 true 값 전달
                self?.connected = path.status == .satisfied
            }
        }
    }
    
    func stop() {
        monitor.cancel()
    }
}

2. NWPathMonitor를 사용한 네트워크 상태 모니터링 예시

...
@StateObject var network: Network = Network()

var body: some View {
  VStack {
  	if network.isConnected {
    	Text("네트워크 연결됨")
    }
    else {
    	Text("네트워크 연결 실패")
        //TODO: 재시도 버튼 작업
    }
  }
  .onAppear {
  	// 뷰가 나타날 때 network 체크
  	network.checkConnection()
  }
  .onChange(of: network.isConnected) {
  	//TODO: onChange를 통하여 toast message를 띄울 수 도 있음
    if !$0 {
    	//TODO: Toast 팝업 - 네트워크 연결에 실패했습니다.
    }
  }
}
profile
Hi, I'm an iOS Developer. I will archive the minor details.

0개의 댓글