[swift] Reachability를 사용해 네트워크 연결 상태 표시를 위한 아이콘 설정하기

목차


개요

iOS 애플리케이션에서 네트워크 연결 상태를 실시간으로 확인하기 위해서는 Reachability 라이브러리를 사용할 수 있습니다. 이 라이브러리를 통해 네트워크 연결 상태에 따라 적절한 아이콘을 표시할 수 있습니다. 이번 글에서는 Swift 언어를 사용하여 Reachability를 이용한 네트워크 상태 아이콘 설정하는 방법을 알아보겠습니다.

Reachability 라이브러리 설치

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

pod 'ReachabilitySwift'

그리고 터미널에서 다음 명령어를 실행하여 라이브러리를 설치합니다:

pod install

Cocoapods를 사용하지 않는다면, 수동으로 Reachability 라이브러리를 프로젝트에 추가합니다.

네트워크 상태 아이콘 설정

  1. Reachability 라이브러리를 프로젝트에 import합니다:
import ReachabilitySwift
  1. Reachability 인스턴스를 생성합니다:
let reachability = Reachability()!
  1. ViewDidLoad() 메서드에서 Reachability를 시작하도록 설정합니다:
override func viewDidLoad() {
    super.viewDidLoad()
    
    // Reachability 시작
    startReachability()
}
  1. Reachability를 시작하는 함수를 추가합니다:
func startReachability() {
    NotificationCenter.default.addObserver(self, selector: #selector(reachabilityChanged), name: ReachabilityChangedNotification, object: reachability)
    
    do {
        try reachability.startNotifier()
    } catch {
        print("Error: Could not start reachability notifier")
    }
}
  1. Reachability 상태가 변경될 때 호출되는 함수를 추가합니다:
@objc func reachabilityChanged(note: Notification) {
    let reachability = note.object as! Reachability
    
    if reachability.isReachable {
        // 네트워크 연결됨
        self.updateNetworkIcon(status: .connected)
    } else {
        // 네트워크 연결 안됨
        self.updateNetworkIcon(status: .disconnected)
    }
}
  1. 네트워크 상태에 따라 아이콘을 업데이트 하는 함수를 추가합니다:
enum NetworkStatus {
    case connected
    case disconnected
}

func updateNetworkIcon(status: NetworkStatus) {
    if status == .connected {
        // 연결되었을 때 아이콘 변경
        self.networkIcon.image = UIImage(named: "connected_icon")
    } else {
        // 연결되지 않았을 때 아이콘 변경
        self.networkIcon.image = UIImage(named: "disconnected_icon")
    }
}
  1. 네트워크 아이콘을 보여줄 UIImageView를 Storyboard에서 추가합니다. 이 예시에서는 networkIcon이라는 IBOutlet을 생성했다고 가정합니다.
@IBOutlet weak var networkIcon: UIImageView!
  1. 앱이 종료될 때 Reachability를 정리하는 함수를 추가합니다:
func stopReachability() {
    reachability.stopNotifier()
    NotificationCenter.default.removeObserver(self, name: ReachabilityChangedNotification, object: reachability)
}

위의 단계를 완료하면, 네트워크 연결 상태에 따라 알맞은 아이콘이 표시됩니다.

참고 자료