[swift] Reachability를 사용해 인터넷 연결 상태가 변경되는 경우 특정 동작 수행하기

개요

앱에서 인터넷 연결 상태가 변경될 때마다 특정 동작을 수행하고 싶은 경우가 종종 있습니다. 이를 위해 iOS에서는 Reachability라는 클래스를 제공합니다. Reachability를 사용하면 현재의 인터넷 연결 상태를 모니터링하고, 상태가 변경될 때 알림을 받을 수 있습니다.

Reachability 라이브러리 설치

먼저 Reachability 라이브러리를 프로젝트에 추가해야 합니다. CocoaPods를 사용하면 간단하게 라이브러리를 설치할 수 있습니다. Podfile에 다음과 같이 추가하고, pod install 명령어를 실행합니다.

pod 'ReachabilitySwift'

Reachability 설정

Reachability를 사용하기 위해 먼저 Reachability 클래스의 인스턴스를 생성해야 합니다. 다음의 코드를 참고하여 Reachability를 설정해보겠습니다.

import Reachability

let reachability = try! Reachability()

func startMonitoringReachability() {
    NotificationCenter.default.addObserver(self, selector: #selector(reachabilityChanged), name: .reachabilityChanged, object: reachability)
    
    do {
        try reachability.startNotifier()
    } catch {
        print("Unable to start notifier")
    }
}

@objc func reachabilityChanged(notification: Notification) {
    let reachability = notification.object as! Reachability
    
    if reachability.connection != .unavailable {
        // 인터넷 연결이 가능한 상태인 경우
        // 원하는 동작을 수행하세요.
        print("인터넷에 연결되었습니다.")
    } else {
        // 인터넷 연결이 불가능한 상태인 경우
        // 원하는 동작을 수행하세요.
        print("인터넷에 연결되지 않았습니다.")
    }
}

Reachability 사용하기

Reachability를 사용하려면 위에서 설정한 startMonitoringReachability 메서드를 호출해야 합니다. 해당 메서드를 코드의 적절한 위치에서 호출하여 인터넷 연결 상태를 모니터링할 수 있습니다.

startMonitoringReachability()

위의 코드를 실행하면 앱은 인터넷 연결 상태를 모니터링하고, 상태가 변화할 때마다 reachabilityChanged 메서드가 호출됩니다. 이 메서드에서 원하는 동작을 수행하면 됩니다.

결론

위에서 설명한 방법을 사용하면 iOS 앱에서 Reachability를 사용하여 인터넷 연결 상태가 변경될 때마다 특정 동작을 수행할 수 있습니다. Reachability를 사용하면 앱의 사용자 경험을 향상시킬 수 있고, 네트워크 연결에 대한 효과적인 처리를 할 수 있습니다.

참고 자료