[swift] Alamofire를 활용한 네트워크 상태 모니터링 구현하기

네트워크 연결 상태 모니터링은 iOS 앱 개발에서 중요한 부분입니다. 사용자가 인터넷 연결이 없으면 앱이 올바르게 작동하지 않을 수 있습니다. 이러한 상황을 방지하기 위해 Alamofire를 사용하여 네트워크 상태 모니터링을 구현해보겠습니다.

Prerequisites

Alamofire 설치

Alamofire를 설치하기 위해서는 먼저 Cocoapods를 사용하여 프로젝트에 의존성을 추가해야 합니다. 프로젝트 폴더에서 Podfile이라는 파일을 생성하고 다음 내용을 추가합니다.

platform :ios, '10.0'
use_frameworks!

target 'YourApp' do
  pod 'Alamofire', '~> 5.0'
end

그리고 터미널에서 다음 명령어를 실행합니다.

$ pod install

Xcode를 다시 열고 생성된 .xcworkspace 파일을 열어서 프로젝트를 실행합니다.

네트워크 상태 감지하기

아래의 코드를 사용하여 네트워크의 상태 변화를 감지합니다.

import Alamofire

class NetworkManager {
    
    static let shared = NetworkManager()
    private let reachabilityManager = NetworkReachabilityManager()
    
    func startMonitoring() {
        reachabilityManager?.startListening { status in
            switch status {
            case .reachable(.ethernetOrWiFi), .reachable(.wwan):
                print("인터넷 연결됨")
            case .notReachable:
                print("인터넷 연결 안됨")
            default: break
            }
        }
    }
    
    func stopMonitoring() {
        reachabilityManager?.stopListening()
    }
}

위의 코드는 NetworkManager라는 싱글턴 클래스를 정의하고, reachabilityManager를 사용하여 네트워크 상태를 감지합니다. startMonitoring() 함수를 호출하면 네트워크 상태 변경을 감지하기 시작하고, stopMonitoring() 함수를 호출하면 감지를 중단합니다.

네트워크 상태 모니터링 시작하기

앱이 실행될 때 네트워크 상태 모니터링을 시작하려면 AppDelegate.swift 파일에 다음과 같이 코드를 추가합니다.

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

네트워크 상태 모니터링 중단하기

앱이 종료되기 전에 네트워크 상태 모니터링을 중단하려면 AppDelegate.swift 파일의 applicationWillTerminate(_:) 메서드에 다음과 같이 코드를 추가합니다.

func applicationWillTerminate(_ application: UIApplication) {
    NetworkManager.shared.stopMonitoring()
}

이제 앱을 실행하면 네트워크 연결 상태에 따라 콘솔에 메시지가 표시됩니다. 네트워크 연결 상태를 올바르게 모니터링할 수 있습니다.

결론

이번 튜토리얼에서는 Alamofire를 사용하여 네트워크 상태 모니터링을 구현하는 방법을 알아보았습니다. 네트워크 상태 변화를 감지하고 적절한 대응을 취할 수 있도록 앱에 이 기능을 추가하는 것이 중요합니다.