소개
네트워크 연결을 확인하고 네트워크 에러를 핸들링하는 것은 모바일 앱 개발에서 중요한 부분입니다. Apple의 Reachability 라이브러리를 사용하면 이를 간편하게 처리할 수 있습니다. 이 글에서는 Swift 언어를 사용하여 Reachability를 이용해 네트워크 에러를 감지하고, 에러 발생 시 다이얼로그를 표시하는 방법을 알아보겠습니다.
Reachability 라이브러리 설치하기
Reachability 라이브러리는 CocoaPods를 통해 설치할 수 있습니다. 프로젝트의 Podfile
에 다음과 같이 추가합니다:
pod 'ReachabilitySwift'
그리고 터미널에서 프로젝트 폴더로 이동한 후 pod install
명령어를 실행하여 라이브러리를 설치합니다.
Reachability 설정하기
먼저 Reachability 객체를 생성하고, 해당 객체로 네트워크 연결 상태를 모니터링하기 위한 설정을 해야 합니다. 이를 위해 아래 코드를 AppDelegate.swift
파일에 추가합니다:
import Reachability
class AppDelegate: UIResponder, UIApplicationDelegate {
var reachability: Reachability!
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
reachability = try! Reachability()
// 네트워크 상태 변화를 감지하는 옵저버 등록
NotificationCenter.default.addObserver(self, selector: #selector(reachabilityChanged(notification:)), name: .reachabilityChanged, object: reachability)
do {
// Reachability 객체 시작
try reachability.startNotifier()
} catch {
print("Unable to start notifier")
}
return true
}
@objc func reachabilityChanged(notification: Notification) {
let reachability = notification.object as! Reachability
if reachability.connection != .unavailable {
// 네트워크 연결이 가능한 상태
} else {
// 네트워크 연결이 불가능한 상태
}
}
}
네트워크 에러 다이얼로그 표시하기
네트워크 연결이 불가능한 상태일 때, 사용자에게 알리기 위해 에러 다이얼로그를 표시할 수 있습니다. 이를 위해 UIAlertController
를 사용하겠습니다. 아래의 코드를 적절한 위치에 추가하여 네트워크 에러 발생 시 다이얼로그를 표시합니다:
func showNetworkErrorDialog() {
let alertController = UIAlertController(title: "네트워크 연결 오류", message: "네트워크에 연결할 수 없습니다.", preferredStyle: .alert)
alertController.addAction(UIAlertAction(title: "확인", style: .default, handler: nil))
// 현재 화면 상단에 다이얼로그 표시
UIApplication.shared.windows.first?.rootViewController?.present(alertController, animated: true, completion: nil)
}
@objc func reachabilityChanged(notification: Notification) {
let reachability = notification.object as! Reachability
if reachability.connection != .unavailable {
// 네트워크 연결이 가능한 상태
} else {
// 네트워크 연결이 불가능한 상태
showNetworkErrorDialog()
}
}
이제 네트워크 연결 상태를 모니터링하고, 연결이 불가능할 때마다 에러 다이얼로그를 표시할 준비가 되었습니다.
결론
Reachability 라이브러리를 사용하여 네트워크 에러 핸들링을 간편하게 처리할 수 있습니다. 이를 통해 네트워크 연결 상태를 모니터링하고, 네트워크 에러 발생 시 사용자에게 알릴 수 있습니다. 추가적으로 필요한 기능을 추가하여 앱의 네트워크 에러 핸들링을 더욱 향상시킬 수 있습니다.