[swift] Reachability를 사용해 네트워크 연결 상태가 불안정한 경우 재시도 로직 구현하기

목차

  1. Reachability란?
  2. Reachability 사용하기
  3. 네트워크 연결 상태 확인하기
  4. 재시도 로직 구현하기
  5. 참고 자료

Reachability란?

Reachability는 iOS 앱에서 네트워크 연결 상태를 감지하는 라이브러리입니다. 이를 사용하여 앱이 연결된 네트워크 상태를 모니터링하고, 연결이 불안정한 경우 재시도 로직을 구현할 수 있습니다.

Reachability 사용하기

Reachability를 사용하기 위해서는 Reachability 라이브러리를 프로젝트에 추가해야 합니다. Cocoapods를 사용하는 경우, Podfile에 다음과 같이 추가합니다.

pod 'ReachabilitySwift'

다음으로, Reachability를 import합니다.

import ReachabilitySwift

네트워크 연결 상태 확인하기

Reachability를 이용하여 네트워크 연결 상태를 확인하는 방법은 간단합니다. 아래와 같이 Reachability 객체를 생성하고, 해당 객체의 status 속성을 통해 현재의 연결 상태를 확인할 수 있습니다.

let reachability = Reachability()!

if reachability.isReachable {
    if reachability.isReachableViaWiFi {
        print("WiFi 연결됨")
    } else {
        print("모바일 데이터 연결됨")
    }
} else {
    print("네트워크 연결 안됨")
}

재시도 로직 구현하기

네트워크 연결 상태가 불안정한 경우, 재시도 로직을 구현하여 사용자 경험을 향상시킬 수 있습니다. 예를 들어, 네트워크 요청이 실패한 경우 주어진 횟수만큼 재시도를 시도하고, 성공할 경우 결과를 처리하는 방법입니다.

var retryCount = 0

func performNetworkRequest() {
    // 네트워크 요청 로직 구현
    
    // 네트워크 요청 실패 시, 재시도 로직 구현
    guard retryCount < 3 else {
        print("네트워크 요청 실패")
        return
    }
    
    if reachability.isReachable {
        print("네트워크 연결됨")
        // 재시도 로직 구현
        retryCount += 1
        performNetworkRequest()
    } else {
        print("네트워크 연결 안됨")
    }
}

위의 예제에서는 retryCount 변수를 사용하여 재시도 횟수를 제어하고, performNetworkRequest() 함수 내에서 재시도를 시도하고 있습니다.

참고 자료