[swift] Reachability를 사용해 인터넷 연결 상태 변경 시 알림 전송하기

앱을 개발할 때, 사용자의 인터넷 연결 상태를 확인해야 하는 경우가 많습니다. 이때 Reachability라이브러리를 사용하면 쉽게 인터넷 연결 상태를 감지하고 상태가 변경될 때 알림을 전송할 수 있습니다.

Reachability 라이브러리 추가하기

Reachability를 사용하기 위해 먼저 앱에 해당 라이브러리를 추가해야 합니다. Reachability는 독립적인 라이브러리이므로, 프로젝트에 직접 추가해야 합니다. Cocoapods를 사용한다면, Podfile에 다음과 같이 추가합니다.

pod 'Reachability'

Reachability 클래스를 사용해 인터넷 연결 상태 감지하기

Reachability 클래스를 사용하면 간단하게 인터넷 연결 상태를 감지할 수 있습니다. 먼저 Reachability 클래스의 인스턴스를 생성한 다음, startNotifier() 메서드를 호출하여 모니터링을 시작합니다.

import Reachability

let reachability = try! Reachability()
try! reachability.startNotifier()

인터넷 연결 상태 변경을 감지하려면 Reachability 객체에 대해 reachabilityChanged 옵저버를 등록해줍니다.

NotificationCenter.default.addObserver(self, selector: #selector(reachabilityChanged(notification:)), name: .reachabilityChanged, object: nil)

감지된 상태 변경은 reachabilityChanged(notification:) 메서드에서 처리합니다.

@objc private func reachabilityChanged(notification: Notification) {
    let reachability = notification.object as! Reachability
    
    if reachability.connection != .unavailable {
        // 인터넷 연결이 가능한 상태일 때 실행할 로직
    } else {
        // 인터넷 연결이 불가능한 상태일 때 실행할 로직
    }
}

알림 전송하기

인터넷 연결 상태가 변경될 때 알림을 전송하려면, 알림 관련 클래스를 사용해야 합니다. 예를 들어 UIAlertController를 사용하여 연결 상태에 따라 알림을 표시할 수 있습니다.

@objc private func reachabilityChanged(notification: Notification) {
    let reachability = notification.object as! Reachability
    
    if reachability.connection != .unavailable {
        // 인터넷 연결이 가능한 상태일 때 실행할 로직
        
        let alert = UIAlertController(title: "알림", message: "인터넷에 연결되었습니다.", preferredStyle: .alert)
        let okAction = UIAlertAction(title: "확인", style: .default) { _ in
            // 확인 버튼을 눌렀을 때 실행될 로직
        }
        
        alert.addAction(okAction)
        present(alert, animated: true, completion: nil)
        
    } else {
        // 인터넷 연결이 불가능한 상태일 때 실행할 로직
        
        let alert = UIAlertController(title: "알림", message: "인터넷에 연결되지 않았습니다.", preferredStyle: .alert)
        let okAction = UIAlertAction(title: "확인", style: .default) { _ in
            // 확인 버튼을 눌렀을 때 실행될 로직
        }
        
        alert.addAction(okAction)
        present(alert, animated: true, completion: nil)
    }
}

결론

Reachability를 사용하면 앱에서 인터넷 연결 상태를 쉽게 감지하고 이에 따른 알림을 전송할 수 있습니다. 이를 통해 사용자에게 인터넷 연결 상태에 대한 정보를 제공하고 적절한 조치를 취할 수 있습니다. 추가적으로 Reachability 라이브러리의 문서와 예제를 참고하여 더 다양한 활용 방법을 알아보세요.

참고 자료