[swift] Reachability를 사용해 대역폭 제한 상태를 감지하는 방법

앱을 개발하다 보면 사용자의 인터넷 연결 상태에 따라 다른 동작을 수행해야 할 때가 있습니다. 이때 Reachability를 사용하면 앱이 인터넷 연결 상태를 실시간으로 감지할 수 있습니다. 이번 포스트에서는 Swift에서 Reachability를 사용하여 대역폭 제한 상태를 감지하는 방법을 알아보겠습니다.

Reachability 라이브러리 설치하기

Reachability를 사용하기 위해서는 먼저 Reachability 라이브러리를 프로젝트에 추가해야 합니다.

  1. 프로젝트의 Podfile을 열고 다음의 코드를 추가합니다.
pod 'ReachabilitySwift'
  1. 터미널을 열고 프로젝트 폴더로 이동한 후 다음 명령어를 입력합니다.
pod install
  1. Reachability 라이브러리의 설치가 완료되면 .xcworkspace 파일을 열어서 프로젝트를 실행합니다.

Reachability 설정하기

Reachability를 사용하기 전에 다음의 단계를 따라 Reachability 클래스를 설정해야 합니다.

  1. Reachability.swift 파일을 찾아 프로젝트에 추가합니다.
  2. Reachability를 사용할 ViewController에 다음 코드를 추가합니다.
import ReachabilitySwift

class ViewController: UIViewController {

    // Reachability 변수 선언
    var reachability: Reachability?

    override func viewDidLoad() {
        super.viewDidLoad()

        // Reachability 객체 생성
        reachability = Reachability()

        // 인터넷 연결 상태 변화를 감지하기 위한 옵저버 설정
        NotificationCenter.default.addObserver(self, selector: #selector(reachabilityChanged), name: ReachabilityChangedNotification, object: reachability)

        // Reachability 시작
        do {
            try reachability?.startNotifier()
        } catch {
            print("Unable to start notifier")
        }
    }

    // Reachability 상태 변화 이벤트 핸들러
    @objc func reachabilityChanged(notification: Notification) {
        let reachability = notification.object as! Reachability

        if reachability.isReachable {
            // 인터넷에 연결되어 있는 경우
            if reachability.isReachableViaWiFi {
                // Wi-Fi로 연결된 경우
                print("인터넷에 Wi-Fi로 연결되었습니다.")
            } else {
                // 모바일 데이터로 연결된 경우
                print("인터넷에 모바일 데이터로 연결되었습니다.")
            }
        } else {
            // 인터넷에 연결되지 않은 경우
            print("인터넷에 연결되어 있지 않습니다.")
        }
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)

        // Reachability 종료
        reachability?.stopNotifier()

        // 옵저버 제거
        NotificationCenter.default.removeObserver(self, name: ReachabilityChangedNotification, object: reachability)
    }
}

대역폭 제한 상태 감지하기

Reachability를 사용하여 대역폭 제한 상태를 감지하려면 다음의 코드를 참고하세요.

// Reachability 객체 생성
let reachability = Reachability()!

// 현재 인터넷 연결 상태 확인
let networkStatus = reachability.currentReachabilityStatus

if networkStatus == .reachableViaWWAN {
    // 대역폭 제한 상태
    print("대역폭 제한 상태입니다.")
} else {
    // 대역폭 제한 상태가 아님
    print("대역폭 제한 상태가 아닙니다.")
}

위의 코드에서 reachability.currentReachabilityStatus를 사용하여 현재 인터넷 연결 상태를 확인하고, .reachableViaWWAN을 통해 대역폭 제한 상태인지 확인할 수 있습니다.

Reachability를 사용하면 앱이 대역폭 제한 상태를 실시간으로 감지할 수 있으므로, 이를 활용하여 사용자에게 알림을 전달하거나 적절한 대처를 취할 수 있습니다.

마무리

이번에는 Swift에서 Reachability를 사용해 대역폭 제한 상태를 감지하는 방법에 대해 알아보았습니다. Reachability를 사용하면 앱의 사용자들이 언제 어떤 인터넷 연결 상태에 있는지 감지하는 것이 가능하며, 이를 기반으로 알림이나 동작을 조정할 수 있습니다. Reachability를 활용하여 앱의 사용자 경험을 개선해보세요.


참고 자료