[swift] Reachability를 사용해 특정 API 호출 가능 여부 확인하기

네트워크 연결 상태를 확인하고 특정 API를 호출할 수 있는지 확인하는 것은 모바일 앱 개발에서 중요한 부분입니다. Swift에서는 Reachability 클래스를 사용하여 이를 간단하게 구현할 수 있습니다. 이번 포스트에서는 Reachability를 사용하여 특정 API 호출 가능 여부를 확인하는 방법을 알아보겠습니다.

Reachability 클래스 가져오기

첫째로, Reachability 클래스를 가져와야 합니다. Reachability는 Apple에서 제공하는 네트워크 연결 상태를 감지하는 라이브러리입니다. Reachability 클래스는 Cocoapods 또는 Carthage를 통해 가져올 수 있습니다.

Cocoapods를 사용하여 Reachability를 가져오려면 Podfile에 다음과 같이 추가하고 pod install을 실행하세요.

pod 'ReachabilitySwift'

Carthage를 사용하여 Reachability를 가져오려면 Cartfile에 다음과 같이 추가하고 carthage update를 실행하세요.

github "ashleymills/Reachability.swift"

Reachability 클래스를 통한 네트워크 상태 확인하기

Reachability를 사용하여 네트워크 상태를 확인하는 방법은 간단합니다. 먼저 import Reachability 문을 통해 Reachability 클래스를 가져온 후, 다음과 같이 네트워크 상태를 체크할 함수를 만듭니다.

import Reachability

func checkNetworkConnection() -> Bool {
    let reachability = try! Reachability()
    
    switch reachability.connection {
    case .unavailable, .none:
        return false
    case .wifi, .cellular:
        return true
    }
}

위의 예제에서는 checkNetworkConnection() 함수를 호출하면 현재 디바이스의 네트워크 상태를 확인할 수 있으며, 네트워크가 연결되어 있는 경우 true를 반환하고 그렇지 않은 경우 false를 반환합니다.

특정 API 호출 가능 여부 확인하기

이제 네트워크 상태를 확인하는 함수를 사용하여 특정 API 호출 가능 여부를 확인하는 방법을 알아보겠습니다. 예를 들어, “https://api.example.com” 이라는 API에 접근 가능한지 확인하는 코드를 작성해보겠습니다.

import Reachability

func checkAPIAvailability() -> Bool {
    let reachability = try! Reachability()
    
    guard reachability.connection != .unavailable else { return false }
    
    let url = URL(string: "https://api.example.com")!
    let request = URLRequest(url: url)
    
    URLSession.shared.dataTask(with: request) { (_, response, error) in
        if let error = error {
            print("API 호출이 불가능합니다. 오류: \(error)")
            return false
        }
        
        guard let httpResponse = response as? HTTPURLResponse,
              (200...299).contains(httpResponse.statusCode) else {
            print("API 호출이 불가능합니다. 응답 코드: \(response.statusCode)")
            return false
        }
        
        return true
    }.resume()
}

위의 예제에서는 checkAPIAvailability() 함수를 호출하면 “https://api.example.com”에 대한 API 호출 가능 여부를 확인할 수 있습니다. 네트워크가 연결되어 있고, API에 정상적인 응답이 오는 경우에는 true를 반환하고, 그렇지 않은 경우에는 false를 반환합니다.

결론

이 포스트에서는 Swift에서 Reachability를 사용하여 특정 API 호출 가능 여부를 확인하는 방법에 대해 알아보았습니다. 네트워크 상태를 확인하고 API 호출 가능 여부를 확인하는 것은 안정적인 모바일 앱 개발을 위해 반드시 고려해야 하는 중요한 부분입니다. Reachability를 사용하여 네트워크 상태를 체크하고 API 호출 가능 여부를 확인하는 방법을 익히고 적절하게 활용하면 더욱 효율적인 앱을 개발할 수 있을 것입니다.

참고: