목차
- 배경
- 구현 / 테스트
- 결론
1. 배경
앱이 실행되거나 사용하는 도중에, 폰의 네트워크 상태를 확인해서
연결이 끊어졌다면 알림을 띄워주고, 다시 연결되었다면 웹뷰의 url을 다시 로드하는 등의 처리하고 싶었다.
2. 구현
1. Network 모듈을 import
import Network
2. 모니터 변수 생성
let monitor = NWPathMonitor()
3. 모니터에 핸들러를 등록
monitor.pathUpdateHandler = { [weak self] path in
if ( monitor.currentPath.status == .satisfied ) {
// 네트워크가 정상일 때 처리
} else {
// .unsatisfied, .requiresConnection
// 네트워크 연결이 끊겼을 때 처리
}
}
- pathUpdateHandler : 네트워크 상태가 업데이트 되면 네트워크 상태(path) 객체를 수신할 핸들러
- path : 네트워크 상태 정보를 담고 있는 객체
- NWPath.Status
- .satisfied : 현재 사용 가능
- .unsatisfied : 사용 불가능
- .requiresConnection : 현재는 사용할 수 없으나, 새 path 설정 시 사용 가능
4. 마지막으로 모니터를 DispatchQueue 에 넣고, 메인 스레드의 background 로 실행
let queue = DispatchQueue(label: "큐 이름")
monitor.start(queue: queue)
3. 결론
이렇게 네트워크 모니터를 추가해서 사용자의 네트워크 상태에 따른 조치를 할 수 있었다.
하지만, 백그라운드에서 계속 동작하고 있는 상황이기 때문에,
앱을 종료하지 않고 홈 버튼을 눌러 내려놓았을 때, 네트워크 상황이 업데이트 되면 예기치 않은 문제가 발생할 수 있어 주의할 필요가 있을 것 같다.
'iOS > Swift' 카테고리의 다른 글
CocoaPods 설치 및 설정 (0) | 2023.10.14 |
---|---|
[Swift] 앱의 화면 회전 제어 (2) | 2021.09.30 |
[Swift] WkWebview의 쿠키 저장 및 로드 (0) | 2021.09.24 |
[Swift] Status Bar / Home Indicator의 색상 변경 (0) | 2021.09.15 |
[Xcode] m1 맥에서 시뮬레이터 빌드 오류 (1) | 2021.09.15 |