네트워크 연결이 불안정한 경우, 앱은 사용자 경험을 향상시키기 위해 적절하게 대응해야 합니다. 사용자에게 불편함을 최소화하기 위해서는 네트워크 상태에 따라 적절한 조치를 취하는 것이 중요합니다.
Swift에서는 Reachability
를 사용하여 네트워크 상태를 감지하고, 적절한 대응 방법을 적용할 수 있습니다. 이러한 대응 방법은 다음과 같습니다.
1. Reachability 라이브러리 추가하기
먼저, Reachability
라이브러리를 프로젝트에 추가해야 합니다. 이 라이브러리는 CocoaPods를 통해 쉽게 설치할 수 있습니다. Podfile
에 다음과 같이 추가한 후, pod install
명령을 실행해주세요.
pod 'ReachabilitySwift'
2. Reachability 객체 생성하기
네트워크 연결 상태를 감지하기 위해 Reachability
객체를 생성해야 합니다. 다음은 Reachability
객체를 생성하는 코드입니다.
import Reachability
let reachability = try! Reachability()
3. 네트워크 상태 변경 감지하기
네트워크 상태가 변경되었을 때 알림을 받기 위해 Reachability
객체에 옵저버를 등록해야 합니다. 대부분의 경우, 앱이 AppDelegate
클래스를 가지고 있으므로, 이곳에서 옵저버를 등록하는 것이 좋습니다. 다음은 AppDelegate
클래스 내부에 옵저버를 등록하는 코드입니다.
import Reachability
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Reachability 객체 생성하기
let reachability = try! Reachability()
// 네트워크 상태 변경 감지하기
reachability.whenReachable = { reachability in
print("네트워크가 연결되었습니다.")
}
reachability.whenUnreachable = { reachability in
print("네트워크가 연결되지 않았습니다.")
}
// Reachability 객체 시작하기
try! reachability.startNotifier()
return true
}
위 코드에서 whenReachable
클로저는 네트워크가 연결되었을 때 실행되고, whenUnreachable
클로저는 네트워크가 연결되지 않았을 때 실행됩니다. 이곳에 네트워크 상태에 맞는 알림 및 처리 로직을 구현하면 됩니다.
4. Reachability 객체 제거하기
앱이 종료되거나 더 이상 네트워크 상태를 감지할 필요가 없을 때, Reachability
객체를 제거하고 옵저버를 해제해야 합니다. 다음은 AppDelegate
클래스 내부의 UIApplicationWillTerminate
이벤트 핸들러에서 Reachability
객체를 제거하는 코드입니다.
import Reachability
func applicationWillTerminate(_ application: UIApplication) {
let reachability = Reachability()!
reachability.stopNotifier()
NotificationCenter.default.removeObserver(self, name: .reachabilityChanged, object: reachability)
}