[swift] Swift Reachability 클래스 소개

iOS 앱을 개발하다 보면 네트워크 연결 상태를 확인하는 기능이 필요할 때가 많습니다. 이때 사용할 수 있는 도구 중 하나가 Reachability 클래스입니다. Reachability 클래스는 iOS 기기의 네트워크 연결 상태를 모니터링하고, 감지된 변경 사항을 알려주는 기능을 제공합니다. 이번 글에서는 Swift에서 Reachability 클래스를 사용하는 방법을 알아보겠습니다.

Reachability 클래스 가져오기

Reachability 클래스는 Github에서 다운로드할 수 있습니다. Github 페이지에서 Reachability.swift 파일을 다운로드 받고, 프로젝트에 추가합니다.

Reachability 클래스 사용하기

  1. Reachability 클래스를 가져온 후 사용할 준비를 합니다.

     import Reachability
    
  2. Reachability 객체를 생성합니다.

     let reachability = try! Reachability()
    

    Reachability 객체를 생성할 때 예외가 발생할 수 있으므로, try! 구문을 사용합니다.

  3. Reachability 객체의 감지된 네트워크 변경 사항을 처리하기 위해 옵저버를 등록합니다.

     NotificationCenter.default.addObserver(self, selector: #selector(networkStatusChanged), name: .reachabilityChanged, object: reachability)
    

    networkStatusChanged 메서드는 네트워크 상태가 변경될 때 호출되는 메서드입니다.

  4. Reachability 객체를 시작합니다.

     try! reachability.startNotifier()
    

    Reachability 객체를 시작하여 네트워크 상태를 모니터링합니다.

  5. 네트워크 상태 변경에 대한 처리를 위한 networkStatusChanged 메서드를 구현합니다.

     @objc func networkStatusChanged(notification: Notification) {
         let reachability = notification.object as! Reachability
         if reachability.connection == .wifi {
             // Wi-Fi 연결 상태 처리
         } else if reachability.connection == .cellular {
             // 모바일 데이터 연결 상태 처리
         } else {
             // 네트워크 연결이 없는 상태 처리
         }
     }
    

    Reachability 객체를 통해 감지된 네트워크 상태가 변경될 때마다 해당 메서드가 호출됩니다. 네트워크 상태에 따라 원하는 처리를 구현합니다.

  6. Reachability 객체를 종료할 때 옵저버를 제거합니다.

     NotificationCenter.default.removeObserver(self, name: .reachabilityChanged, object: reachability)
    

    Reachability 객체를 더 이상 사용하지 않을 때, 해당 옵저버를 제거합니다.

위와 같이 Reachability 클래스를 이용하여 iOS 앱에서 네트워크 상태를 모니터링하고, 감지된 변경 사항을 처리할 수 있습니다. 이를 활용하여 앱의 네트워크 연결 상태를 확인하고, 적절한 대응을 취할 수 있습니다.