[swift] Reachability를 사용해 인터넷 연결이 정상인지 확인하기

앱을 개발할 때, 사용자의 인터넷 연결 상태를 확인하는 것은 중요한 요소입니다. Reachability를 사용하여 인터넷 연결 상태를 감지하고 알려주는 방법을 알아보겠습니다.

Reachability 라이브러리 가져오기

일단, Reachability를 사용하기 위해서 Reachability 라이브러리를 가져와야 합니다. Reachability는 Apple의 Sample Code로 제공되며, 여기에서 다운로드할 수 있습니다.

Reachability 클래스 생성하기

다운로드한 Reachability 라이브러리를 프로젝트에 추가한 후, 아래와 같이 Reachability 클래스를 생성합니다.

import Foundation
import SystemConfiguration

class Reachability {
    
    static func isConnectedToNetwork() -> Bool {
        var zeroAddress = sockaddr_in()
        zeroAddress.sin_len = UInt8(MemoryLayout.size(ofValue: zeroAddress))
        zeroAddress.sin_family = sa_family_t(AF_INET)
        
        guard let defaultRouteReachability = withUnsafePointer(to: &zeroAddress, {
            $0.withMemoryRebound(to: sockaddr.self, capacity: 1) {
                SCNetworkReachabilityCreateWithAddress(nil, $0)
            }
        }) else {
            return false
        }
        
        var flags: SCNetworkReachabilityFlags = []
        if !SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags) {
            return false
        }
        
        let isReachable = flags.contains(.reachable)
        let needsConnection = flags.contains(.connectionRequired)
        
        return (isReachable && !needsConnection)
    }
}

위의 코드는 Reachability 클래스의 isConnectedToNetwork 메서드를 정의하고, 인터넷 연결이 있는지 여부를 확인하는 로직을 구현한 것입니다.

이제, 이 클래스를 사용하여 인터넷 연결 상태를 확인할 수 있습니다.

if Reachability.isConnectedToNetwork() {
    print("인터넷에 연결되었습니다.")
} else {
    print("인터넷에 연결되어 있지 않습니다.")
}

isConnectedToNetwork 메서드를 호출하여 인터넷 연결이 있는지 확인하고, 그에 따라 적절한 동작을 수행할 수 있습니다.

결론

Reachability를 사용하면 앱 내에서 인터넷 연결 상태를 쉽게 확인할 수 있습니다. 이를 통해 사용자에게 인터넷 연결이 필요한 기능을 사용하기 전에 연결 상태를 미리 알려줄 수 있습니다.