[swift] Reachability를 사용해 인터넷 연결 상태가 변경되는 경우 에러 핸들링하기

애플리케이션을 개발하다보면 사용자의 인터넷 연결 상태를 확인하는 기능이 필요할 때가 있습니다. 이때 Reachability 라이브러리를 활용하여 간편하게 인터넷 연결 상태를 확인하고, 변경될 때 적절한 에러 핸들링을 할 수 있습니다. 이번 블로그 포스트에서는 Swift 언어를 사용하여 Reachability 라이브러리를 이용해 인터넷 연결 상태 변경 시 에러 핸들링하는 방법에 대해 알아보겠습니다.

1. Reachability 라이브러리 추가하기

먼저, 프로젝트에 Reachability 라이브러리를 추가해야 합니다. 프로젝트의 Podfile에 다음과 같이 Reachability 팟을 추가하고, pod install을 실행합니다.

pod 'Reachability'

이제 프로젝트에 Reachability 라이브러리가 추가되었습니다.

2. Reachability 객체 생성하기

Reachability의 기능을 사용하기 위해서는 해당 객체를 생성해야 합니다. 예를 들어, viewDidLoad 메서드에서 다음과 같이 Reachability 객체를 생성합니다.

import Reachability

var reachability: Reachability!

override func viewDidLoad() {
    super.viewDidLoad()
    
    reachability = try! Reachability()
}

3. Reachability 변경 감지하기

이제 Reachability 객체를 사용하여 인터넷 연결 상태를 감지할 수 있습니다. 다음은 인터넷 연결 상태가 변경될 때 호출되는 메서드입니다.

func setupReachability() {
    NotificationCenter.default.addObserver(self, selector: #selector(reachabilityChanged(_:)), name: .reachabilityChanged, object: reachability)
    
    do {
        try reachability.startNotifier()
    } catch {
        print("Error starting reachability notifier")
    }
}

@objc func reachabilityChanged(_ notification: Notification) {
    let reachability = notification.object as! Reachability
    
    switch reachability.connection {
    case .wifi:
        print("Connected via WiFi")
        // WiFi 연결 상태에 대한 작업 수행
    case .cellular:
        print("Connected via Cellular")
        // 모바일 데이터 연결 상태에 대한 작업 수행
    case .none:
        print("Not connected")
        // 인터넷 연결이 없는 상태에 대한 작업 수행
    }
}

위 코드에서는 NSNotification.Name.reachabilityChanged를 옵저버로 등록하여 인터넷 연결 상태가 변경될 때 reachabilityChanged(_:) 메서드를 호출합니다. 메서드 내에서 Reachability 객체를 통해 현재의 연결 상태를 확인하고, 각 상태에 따른 작업을 수행할 수 있습니다.

4. Reachability 객체 해제하기

앱이 종료되거나 더 이상 인터넷 연결 상태를 감지하지 않아야 할 때 Reachability 객체를 해제해야 합니다. 다음은 deinit 메서드를 사용하여 Reachability 객체를 해제하는 예시입니다.

deinit {
    reachability.stopNotifier()
    NotificationCenter.default.removeObserver(self)
}

5. 결론

본 포스트에서는 Reachability 라이브러리를 사용하여 인터넷 연결 상태가 변경될 때 에러 핸들링하는 방법에 대해 알아보았습니다. Reachability 라이브러리의 사용을 통해 애플리케이션에서 인터넷 연결 상태를 감지하고, 단말기의 네트워크 상태에 대한 적절한 대응을 할 수 있습니다. 추가적인 정보는 Reachability Github 페이지에서 확인할 수 있습니다.