[swift] Reachability를 사용해 와이파이 연결 상태 알림 받기

소개

애플리케이션에서는 사용자에게 와이파이 연결 상태를 알려주는 기능이 매우 중요합니다. Reachability는 iOS에서 네트워크 연결 상태를 확인하는 도구이며, 와이파이 연결 여부를 간단하게 확인할 수 있습니다. 이 글에서는 Swift에서 Reachability를 사용해 와이파이 연결 상태를 감지하고, 상태 변화에 따른 알림을 받는 방법을 알려드리겠습니다.

Reachability 설정하기

  1. Reachability.swift 파일을 프로젝트에 추가합니다. (Reachability 클래스가 포함되어 있습니다)
  2. Reachability를 사용하기 위해 SystemConfiguration 프레임워크를 프로젝트에 추가합니다.
  3. Reachability.swift 파일을 프로젝트의 타겟에 추가합니다.

Reachability 클래스 사용하기

Reachability 클래스를 사용하여 와이파이 연결 상태를 알아낼 수 있습니다. 아래와 같이 Reachability 객체를 생성한 후, startNotifier()를 호출하여 상태 변화를 감지할 수 있습니다.

import Foundation
import Reachability

class NetworkManager {
    let reachability = try! Reachability()

    func startMonitoring() {
        NotificationCenter.default.addObserver(self, selector: #selector(networkStatusChanged), name: .reachabilityChanged, object: reachability)
        do {
            try reachability.startNotifier()
        } catch {
            print("Reachability Error: \(error)")
        }
    }

    @objc func networkStatusChanged(notification: Notification) {
        let reachability = notification.object as! Reachability
        if reachability.connection != .unavailable {
            print("와이파이 연결됨")
        } else {
            print("와이파이 연결 안됨")
        }
    }
}

let networkManager = NetworkManager()
networkManager.startMonitoring()

위 코드에서는 NetworkManager 클래스를 통해 와이파이 연결 상태를 감지합니다. startMonitoring() 함수를 호출하여 상태 변화를 감지하고, networkStatusChanged 메서드를 통해 연결 상태에 따른 알림을 받을 수 있습니다.

추가 구현 사항

Reachability를 통해 와이파이 연결 상태를 감지하는 것 외에도 다양한 기능을 추가할 수 있습니다. 몇 가지 예시를 소개하겠습니다.

  1. 사용자에게 연결 상태 알림 표시: 상태 변화에 따라 화면에 알림을 표시하여 사용자에게 연결 상태를 알릴 수 있습니다.
  2. 자동으로 와이파이 연결 시도: 와이파이 연결이 끊어진 경우, 자동으로 다시 연결을 시도할 수 있습니다.
  3. 연결 상태에 따른 기능 제한: 와이파이 연결이 끊어진 경우에만 특정 기능을 제한하는 등의 로직을 추가할 수 있습니다.

위와 같은 추가 구현 사항을 고려하여 애플리케이션의 요구사항에 맞게 Reachability를 활용할 수 있습니다.

결론

Reachability를 사용하여 와이파이 연결 상태를 알리는 기능을 구현하는 방법을 알아보았습니다. 이를 활용하여 사용자에게 네트워크 상태를 알림으로 제공하거나, 연결 상태에 따른 기능을 제한하는 등 다양한 활용이 가능합니다. Reachability를 사용하면 네트워크 상태를 감지하고 이에 따른 처리를 할 수 있으므로, 애플리케이션의 사용자 경험 향상에 도움이 될 것입니다.

참고 자료