[swift] 앱 초기화 시 Reachability 설정하기

iOS 앱을 개발할 때 네트워크 연결 상태를 감지하기 위해 Reachability 라이브러리를 사용하는 것은 매우 유용합니다. 이 라이브러리를 사용하면 앱이 시작될 때마다 네트워크 연결 상태를 확인하여 사용자에게 적절한 대응을 할 수 있습니다.

이번 포스트에서는 앱 초기화 시 Reachability를 설정하는 방법을 알아보겠습니다.

라이브러리 추가

먼저, Reachability 라이브러리를 프로젝트에 추가해야 합니다. 이를 위해 CocoaPods를 사용할 수 있습니다. Podfile에 다음과 같이 라이브러리를 추가합니다.

pod 'ReachabilitySwift'

그리고 터미널에서 pod install 명령을 실행하여 라이브러리를 설치합니다.

Reachability 클래스 생성하기

Reachability를 사용하기 위해 Reachability 클래스를 생성해야 합니다. 다음은 Reachability 클래스의 기본적인 구현 예입니다.

class NetworkReachability {

    static let sharedInstance = NetworkReachability()
    var reachability: Reachability?

    private init() {
        reachability = try? Reachability()
    }

    func startMonitoring() {
        NotificationCenter.default.addObserver(self, selector: #selector(handleReachabilityChanged(notification:)), name: .reachabilityChanged, object: nil)
        do {
            try reachability?.startNotifier()
        } catch {
            print("Failed to start reachability notifier")
        }
    }

    func stopMonitoring() {
        reachability?.stopNotifier()
        NotificationCenter.default.removeObserver(self)
    }

    @objc func handleReachabilityChanged(notification: NSNotification) {
        guard let reachability = notification.object as? Reachability else { return }
        switch reachability.connection {
        case .none:
            print("네트워크 연결 없음")
        case .wifi:
            print("Wi-Fi에 연결됨")
        case .cellular:
            print("셀룰러 데이터에 연결됨")
        }
    }
}

위의 코드에서 startMonitoring 함수는 Reachability를 시작하고, stopMonitoring 함수는 Reachability를 중지합니다. 또한, handleReachabilityChanged 함수를 통해 네트워크 연결 상태에 따라 적절한 로직을 처리할 수 있습니다.

앱 초기화 시 Reachability 설정하기

이제 앱이 초기화될 때 Reachability를 설정해야 합니다. 이를 위해 AppDelegate 클래스의 didFinishLaunchingWithOptions 함수를 사용할 수 있습니다. 다음은 Reachability를 초기화하고 모니터링을 시작하는 코드입니다.

class AppDelegate: UIResponder, UIApplicationDelegate {

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

    // ...
}

위의 코드에서 NetworkReachability.sharedInstance.startMonitoring()을 호출하여 Reachability를 시작합니다.

결론

이제 앱이 초기화될 때 Reachability를 설정하는 방법을 알아보았습니다. Reachability를 사용하여 앱의 네트워크 연결 상태를 감지하고 적절한 대응을 할 수 있습니다. 이를 통해 더 나은 사용자 경험을 제공할 수 있습니다.

더 자세한 내용은 ReachabilitySwift GitHub 페이지를 참고하세요.