네트워크 연결 확인 뷰
아래와 같이 네트워크 연결에 따라서 실시간으로 인터넷 연결, 인터넷 연결 안됨 창을 표시한다.
NetworkMonitor 클래스 생성
아래와 같이 SwiftUI 에 새로 도입된 @Observable 이 사용된다. init() 을 하게 되면, isConnected 라는 변수를 인터넷의 연결여부에 따라서 업데이트 해준다.
import Foundation
import Network
@Observable
class NetworkMonitor {
private let networkMonitor = NWPathMonitor()
private let workerQueue = DispatchQueue(label: "Monitor")
var isConnected = false
init() {
networkMonitor.pathUpdateHandler = { path in
self.isConnected = path.status == .satisfied
}
networkMonitor.start(queue: workerQueue)
}
}
적용 예시
아래에 @State private var networkMonitor = NetworkMonitor() 로 불러와서 isConnected 변수를 활용해 주면 된다.
import SwiftUI
struct ContentView: View {
@State private var networkMonitor = NetworkMonitor()
var body: some View {
if networkMonitor.isConnected {
VStack {
Image(systemName: "wifi")
.font(.largeTitle)
.padding(.bottom)
Text("인터넷 연결")
}
} else {
VStack {
Image(systemName: "wifi.slash")
.font(.largeTitle)
.padding(.bottom)
Text("인터넷 연결 안됨")
}
}
}
}
'→ Swift Archive' 카테고리의 다른 글
[SwiftUI] 앱의 실행, 종료 알기 (1) | 2024.01.27 |
---|---|
[SwiftUI] 앱이 background 에서 다시 돌아왔을 때 알기 (0) | 2024.01.27 |
[SwiftUI] 커스텀 글래스모피즘 구현하기 (0) | 2024.01.10 |
[SwiftUI] PolygonChart 만들기 (1) | 2023.12.15 |
[SwiftUI] 햅틱 반응 적용하기 (1) | 2023.11.15 |