[swift] Reachability를 사용해 네트워크 연결 상태 표시를 위한 아이콘 설정하기
목차
개요
iOS 애플리케이션에서 네트워크 연결 상태를 실시간으로 확인하기 위해서는 Reachability 라이브러리를 사용할 수 있습니다. 이 라이브러리를 통해 네트워크 연결 상태에 따라 적절한 아이콘을 표시할 수 있습니다. 이번 글에서는 Swift 언어를 사용하여 Reachability를 이용한 네트워크 상태 아이콘 설정하는 방법을 알아보겠습니다.
Reachability 라이브러리 설치
Reachability를 사용하기 위해서는 먼저 해당 라이브러리를 설치해야 합니다. Cocoapods를 사용한다면 Podfile
에 다음과 같이 추가합니다:
pod 'ReachabilitySwift'
그리고 터미널에서 다음 명령어를 실행하여 라이브러리를 설치합니다:
pod install
Cocoapods를 사용하지 않는다면, 수동으로 Reachability 라이브러리를 프로젝트에 추가합니다.
네트워크 상태 아이콘 설정
- Reachability 라이브러리를 프로젝트에 import합니다:
import ReachabilitySwift
- Reachability 인스턴스를 생성합니다:
let reachability = Reachability()!
- ViewDidLoad() 메서드에서 Reachability를 시작하도록 설정합니다:
override func viewDidLoad() {
super.viewDidLoad()
// Reachability 시작
startReachability()
}
- 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")
}
}
- Reachability 상태가 변경될 때 호출되는 함수를 추가합니다:
@objc func reachabilityChanged(note: Notification) {
let reachability = note.object as! Reachability
if reachability.isReachable {
// 네트워크 연결됨
self.updateNetworkIcon(status: .connected)
} else {
// 네트워크 연결 안됨
self.updateNetworkIcon(status: .disconnected)
}
}
- 네트워크 상태에 따라 아이콘을 업데이트 하는 함수를 추가합니다:
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")
}
}
- 네트워크 아이콘을 보여줄 UIImageView를 Storyboard에서 추가합니다. 이 예시에서는
networkIcon
이라는 IBOutlet을 생성했다고 가정합니다.
@IBOutlet weak var networkIcon: UIImageView!
- 앱이 종료될 때 Reachability를 정리하는 함수를 추가합니다:
func stopReachability() {
reachability.stopNotifier()
NotificationCenter.default.removeObserver(self, name: ReachabilityChangedNotification, object: reachability)
}
위의 단계를 완료하면, 네트워크 연결 상태에 따라 알맞은 아이콘이 표시됩니다.