[swift] Reachability를 사용해 인터넷 연결 상태에 따른 에러 메시지 표시하기

목표

앱의 기능 중 일부는 인터넷 연결이 필요할 수 있습니다. 따라서 인터넷 연결 상태에 따라 사용자에게 에러 메시지를 표시하는 기능을 구현하고자 합니다.

준비물

구현 방법

Step 1: Reachability 라이브러리 추가하기

Reachability는 Cocoapods를 통해 설치할 수 있습니다. Podfile에 다음 라인을 추가하고, 터미널에서 pod install 명령어를 실행합니다.

pod 'ReachabilitySwift'

Step 2: Reachability 객체 생성하기

Reachability를 사용하기 위해, Reachability.swift 파일을 프로젝트에 추가합니다. 그리고 해당 파일을 import 합니다.

import Reachability

Reachability 객체는 해당 코드를 통해 생성할 수 있습니다.

let reachability = try! Reachability()

Step 3: 인터넷 연결 상태 모니터링하기

Reachability 객체를 통해 인터넷 연결 상태를 모니터링할 수 있습니다. 아래 코드는 인터넷 연결 상태가 변경될 때마다 호출되는 함수를 정의합니다. 연결 상태에 따라 에러 메시지를 표시하고자 할 때, 해당 함수 내부에 로직을 추가할 수 있습니다.

reachability.whenReachable = { reachability in
    // 인터넷에 연결되었을 때의 로직
    print("인터넷에 연결되었습니다.")
}

reachability.whenUnreachable = { reachability in
    // 인터넷에 연결되지 않았을 때의 로직
    print("인터넷에 연결할 수 없습니다.")
}

do {
    try reachability.startNotifier()
} catch {
    print("인터넷 연결 상태 모니터링 실패")
}

Step 4: 에러 메시지 표시하기

에러 메시지를 표시하기 위해 UILabel을 사용합니다. 예를 들어, ViewController에 다음과 같은 IBOutlet을 추가합니다.

@IBOutlet weak var errorLabel: UILabel!

에러 메시지를 업데이트하기 위한 함수를 작성합니다.

func updateErrorMessage(isConnected: Bool) {
    if isConnected {
        errorLabel.text = "인터넷에 연결되었습니다."
    } else {
        errorLabel.text = "인터넷에 연결할 수 없습니다."
    }
}

Step 3에서 작성한 함수 내부에서 에러 메시지를 업데이트하는 로직을 추가합니다.

reachability.whenReachable = { reachability in
    // 인터넷에 연결되었을 때의 로직
    self.updateErrorMessage(isConnected: true)
}

reachability.whenUnreachable = { reachability in
    // 인터넷에 연결되지 않았을 때의 로직
    self.updateErrorMessage(isConnected: false)
}

결론

Reachability 라이브러리를 사용하여 인터넷 연결 상태를 모니터링하고, 에러 메시지를 표시하는 기능을 구현하는 방법에 대해 알아보았습니다. 사용자에게 인터넷 연결 상태에 따른 적절한 메시지를 제공함으로써 앱의 사용성을 향상시킬 수 있습니다. 추가적으로 UI 요소의 디자인과 사용자 경험을 고려하여, 에러 메시지를 표시하는 방식을 개선할 수도 있습니다.

참고 자료