[swift] Reachability를 사용해 서버 연결 실패 처리하기

앱 개발 중에 서버 연결이 필요한 경우, 가끔 서버에 연결되지 않는 상황이 발생할 수 있습니다. 이러한 상황을 처리하려면 Reachability를 사용하여 네트워크 상태를 확인하고, 연결 실패에 대한 대비책을 마련해야 합니다.

Reachability는 Apple에서 제공하는 라이브러리로, 현재 디바이스의 네트워크 상태를 감지하여 앱이 적절하게 대응할 수 있도록 도와줍니다. 이번 포스트에서는 Reachability를 이용해 서버 연결 실패에 대한 처리 방법을 알아보겠습니다.

1. Reachability 라이브러리 추가하기

먼저, Reachability를 사용하기 위해 Cocoapods를 통해 라이브러리를 추가해야 합니다. Podfile에 아래와 같이 Reachability를 추가한 후, 터미널에서 pod install 명령어를 실행하세요.

pod 'ReachabilitySwift'

2. Reachability 클래스 사용하기

Reachability 라이브러리를 추가한 후, Reachability 클래스를 사용하여 네트워크 연결 상태를 확인할 수 있습니다. 아래 코드는 Reachability를 사용해 네트워크 연결 상태를 확인하고, 연결 실패에 대한 처리를 수행하는 함수입니다.

import Reachability

func checkNetworkStatus() {
    let reachability = try! Reachability()
    
    reachability.whenUnreachable = { reachability in
        // 서버 연결 실패 처리 로직
        print("서버에 연결할 수 없습니다.")
    }
    
    do {
        try reachability.startNotifier()
    } catch {
        print("네트워크 감지를 시작할 수 없습니다.")
    }
}

위 코드에서 whenUnreachable 클로저 안에 서버 연결 실패 처리 로직을 작성하면 됩니다. 연결 실패 시 실행되는 클로저에서는 해당 상황에 맞게 알림을 보여주거나, 재시도 등의 작업을 수행할 수 있습니다.

3. 앱 시작 시 Reachability 체크하기

앱이 시작될 때에는 네트워크 연결 상태를 미리 체크해두는 것이 좋습니다. 앱 델리게이트의 application(_:didFinishLaunchingWithOptions:) 메서드에서 Reachability 체크 함수를 호출하면 됩니다.

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    checkNetworkStatus()
    
    return true
}

이렇게 하면 앱이 시작될 때마다 네트워크 연결 상태를 확인하고, 서버 연결 실패에 대한 처리를 수행할 수 있습니다.

결론

이제 Reachability를 사용하여 서버 연결 실패에 대한 처리 방법을 알아봤습니다. 네트워크 연결 상태를 확인하여 앱이 적절하게 대응하도록 설계하는 것은 안정적인 앱 개발에 중요한 요소 중 하나입니다. Reachability를 활용하여 네트워크 상태를 체크하고, 적절한 실패 처리 로직을 구현해보세요. 다양한 상황에 대처할 수 있는 안정적인 앱을 만들 수 있을 것입니다.

참고 자료