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

iOS 앱 개발 시, 사용자의 인터넷 연결 상태를 감지하고 이에 따른 특정 동작을 수행해야 할 때가 있습니다. Reachability를 사용하면 인터넷 연결 상태가 변경될 때마다 적절한 동작을 수행할 수 있습니다.

Reachability 라이브러리 설치

먼저 Reachability를 사용하기 위해 Cocoapods를 이용해 라이브러리를 설치합니다. Podfile에 다음과 같이 Reachability를 추가합니다.

pod 'ReachabilitySwift'

터미널에서 pod install 명령어를 실행하여 라이브러리를 설치합니다.

Reachability 객체 생성

Reachability를 사용하기 위해서는 Reachability 객체를 생성해야 합니다. 일반적으로 ViewController 등에서 Reachability 객체를 생성하고 연결 상태 변경을 감지하는 로직을 구현합니다.

다음은 Reachability 객체를 생성하는 예시입니다.

import Reachability

class ViewController: UIViewController {
    let reachability = try? Reachability()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // Reachability 객체 생성 후 연결 상태 변경 감지
        NotificationCenter.default.addObserver(self, selector: #selector(toggleReachability(notification:)), name: .reachabilityChanged, object: reachability)
        do {
            try reachability?.startNotifier()
        } catch {
            print("Unable to start reachability notifier")
        }
    }
    
    @objc func toggleReachability(notification: NSNotification) {
        guard let reachability = notification.object as? Reachability else {
            return
        }
        
        if reachability.connection != .unavailable {
            // 인터넷 연결 상태가 변경된 경우 동작 수행
            performActionWhenReachable()
        } else {
            // 인터넷 연결이 끊긴 경우 동작 수행
            performActionWhenUnreachable()
        }
    }
    
    func performActionWhenReachable() {
        // 인터넷 연결이 가능한 상태에 대한 처리 로직 구현
    }
    
    func performActionWhenUnreachable() {
        // 인터넷 연결이 불가능한 상태에 대한 처리 로직 구현
    }
}

위의 코드에서는 Reachability 객체를 생성하고, .reachabilityChanged Observer를 추가하여 연결 상태의 변경을 감지합니다. 연결 상태 변경 시 toggleReachability 메서드가 호출되고, 해당 메서드에서 연결 상태에 따른 동작을 수행합니다.

주의사항

참고 자료