목차
Reachability란?
네트워크 상태를 모니터링하는 것은 앱의 성능과 사용자 경험에 중요한 영향을 미칩니다. 사용자가 온라인 또는 오프라인인지 확인하여, 필요한 작업을 제한하거나 오류 메시지를 표시하는 등의 처리를 할 수 있습니다.
Reachability는 네트워크 연결 상태를 확인하기 위한 SDK로, Apple에서 제공하는 SystemConfiguration.framework에 포함되어 있습니다. Reachability를 사용하면 앱에서 인터넷 연결 상태를 감지하고, 연결 유형(와이파이, 셀룰러 등)을 확인할 수 있습니다.
Reachability 모듈 구현
간단한 Swift 모듈을 만들어서 Reachability를 활용할 수 있습니다. 먼저, Reachability 파일을 다운로드하고 프로젝트에 추가합니다.
프로젝트에 Reachability.swift 파일이 추가되면, 다음과 같이 모듈을 구현할 수 있습니다.
import Reachability
class NetworkManager {
static let shared = NetworkManager()
private let reachability: Reachability!
private init() {
reachability = try! Reachability()
NotificationCenter.default.addObserver(self, selector: #selector(reachabilityChanged), name: .reachabilityChanged, object: reachability)
try! reachability.startNotifier()
}
@objc private func reachabilityChanged(notification: Notification) {
let reachability = notification.object as! Reachability
if reachability.connection != .unavailable {
// 네트워크 연결이 가능한 상태
} else {
// 네트워크 연결이 불가능한 상태
}
}
}
NetworkManager는 Singleton으로 구현되어 있으며, Reachability 객체를 사용하여 reachabilityChanged 메서드가 호출되면 네트워크 연결 상태를 확인하고 처리할 수 있습니다.
네트워크 상태 모니터링
Reachability 모듈을 사용하면, 앱의 어느 곳에서든지 네트워크 상태를 모니터링할 수 있습니다. 예를 들어, ViewController에서 네트워크 상태 변화에 따른 처리를 해보겠습니다.
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(reachabilityChanged), name: .reachabilityChanged, object: nil)
}
@objc func reachabilityChanged(notification: Notification) {
let reachability = notification.object as! Reachability
if reachability.connection != .unavailable {
// 네트워크 연결 가능
showAlert(with: "네트워크 연결 가능")
} else {
// 네트워크 연결 불가능
showAlert(with: "네트워크 연결 불가능")
}
}
func showAlert(with message: String) {
let alert = UIAlertController(title: "네트워크 상태", message: message, preferredStyle: .alert)
let okAction = UIAlertAction(title: "확인", style: .default, handler: nil)
alert.addAction(okAction)
present(alert, animated: true, completion: nil)
}
}
ViewController에서 reachabilityChanged 메서드를 구현하고, NotificationCenter를 통해 Reachability의 변화를 감지합니다. 상태에 따라서 showAlert 메서드를 통해 알림창을 표시할 수 있습니다.
마무리
이번 포스트에서는 Reachability를 사용해 네트워크 상태를 모니터링하는 독립적인 모듈을 구현하는 방법에 대해 알아보았습니다. 네트워크 상태 모니터링은 사용자에게 편리한 서비스를 제공하고 앱의 성능을 향상시키는 데에 큰 도움이 됩니다.
더 자세한 내용은 Reachability GitHub 참고에서 확인할 수 있습니다.