[swift] Reachability를 사용해 네트워크 연결 상태에 따라 서비스 제공 방식 변경하기
네트워크 연결 상태에 따라 앱의 서비스 제공 방식을 동적으로 변경하고 싶다면, Reachability를 사용하여 네트워크 상태를 감지하고 이에 따라 적절한 처리를 할 수 있습니다. Reachability는 iOS에서 네트워크 연결 상태를 모니터링하는 클래스로, 네트워크에 연결되었는지 여부를 감지해줍니다.
Reachability 클래스 사용하기
-
Reachability 라이브러리를 프로젝트에 추가합니다. Swift Package Manager나 CocoaPods, Carthage 등 여러 방법으로 설치할 수 있습니다.
-
Reachability를 import 합니다.
import Reachability
- Reachability 인스턴스를 생성합니다.
let reachability = try! Reachability()
- 본문에서는 네트워크 연결 상태가 변경되면 호출될 콜백 함수를 정의해보겠습니다.
func networkStatusChanged(_ notification: Notification) {
guard let reachability = notification.object as? Reachability else { return }
if reachability.connection != .unavailable {
// 네트워크 연결됨 - 적절한 처리를 수행합니다.
} else {
// 네트워크 연결 끊어짐 - 적절한 처리를 수행합니다.
}
}
// 콜백 함수를 등록합니다.
NotificationCenter.default.addObserver(self, selector: #selector(networkStatusChanged), name: Notification.Name.reachabilityChanged, object: reachability)
위의 코드에서는 networkStatusChanged
함수를 reachabilityChanged
Notification을 받는 콜백 함수로 지정하고, 이를 NotificationCenter에 등록했습니다. 이 함수에서는 reachability
객체의 connection
속성을 확인하여 네트워크 연결 상태에 따른 처리를 수행할 수 있습니다.
- 앱 실행 중에 네트워크 연결 상태를 모니터링하고 싶다면, 다음과 같이
startNotifier()
메서드를 호출합니다.
try? reachability.startNotifier()
- 앱 종료 시에는 반드시
stopNotifier()
메서드를 호출하여 Reachability를 정상적으로 해제해야 합니다.
reachability.stopNotifier()
위의 단계를 따라하면 Reachability를 사용하여 네트워크 연결 상태에 따라 적절한 서비스 제공 방식을 동적으로 변경할 수 있습니다.
참고 자료
- Reachability 라이브러리 GitHub 저장소: https://github.com/ashleymills/Reachability.swift
- iOS 개발자 문서: https://developer.apple.com/documentation/systemconfiguration/scnetworkreachability