iOS 앱에서 앱이 백그라운드 또는 포그라운드로 전환될 때마다 특정 로직을 처리하고 싶을 때가 있습니다. SwiftEventBus라는 라이브러리를 사용하면 이러한 이벤트 처리를 쉽게 구현할 수 있습니다.
이제 SwiftEventBus를 사용하여 앱의 백그라운드/포그라운드 전환 이벤트를 처리하는 방법에 대해 알아보겠습니다.
1. SwiftEventBus 설치하기
먼저, SwiftEventBus를 설치해야 합니다. CocoaPods를 사용한다면 Podfile
에 다음과 같이 추가합니다:
pod 'SwiftEventBus'
그리고 터미널에서 pod install
명령어를 실행하여 설치합니다.
2. SwiftEventBus 설정하기
SwiftEventBus를 사용하려면 먼저 이벤트를 등록하고 처리하는 코드를 작성해야 합니다.
import SwiftEventBus
// 백그라운드 이벤트 핸들러 등록
NotificationCenter.default.addObserver(self, selector: #selector(appDidEnterBackground), name: UIApplication.didEnterBackgroundNotification, object: nil)
// 포그라운드 이벤트 핸들러 등록
NotificationCenter.default.addObserver(self, selector: #selector(appWillEnterForeground), name: UIApplication.willEnterForegroundNotification, object: nil)
@objc private func appDidEnterBackground() {
// 백그라운드 진입 시 처리할 로직 작성
SwiftEventBus.post("appDidEnterBackground")
}
@objc private func appWillEnterForeground() {
// 포그라운드 진입 시 처리할 로직 작성
SwiftEventBus.post("appWillEnterForeground")
}
위의 코드에서 appDidEnterBackground
함수는 앱이 백그라운드로 전환될 때 호출되는 핸들러입니다. 마찬가지로, appWillEnterForeground
함수는 앱이 포그라운드로 전환될 때 호출되는 핸들러입니다.
이벤트 핸들러 내부에서는 SwiftEventBus.post("이벤트명")
를 사용하여 해당 이벤트를 발생시킬 수 있습니다. 여기서는 “appDidEnterBackground”와 “appWillEnterForeground”라는 이벤트를 발생시킵니다.
3. 이벤트 수신하기
이벤트를 수신하려면 다음과 같이 SwiftEventBus.onMainThread(target: Any, name: String, sender: AnyObject? = nil, handler: (ResultType?) -> Void)
함수를 호출하여 이벤트를 구독해야 합니다.
SwiftEventBus.onMainThread(target: self, name: "appDidEnterBackground") { result in
// 백그라운드 이벤트 발생시 실행될 로직 작성
}
SwiftEventBus.onMainThread(target: self, name: "appWillEnterForeground") { result in
// 포그라운드 이벤트 발생시 실행될 로직 작성
}
위의 코드에서 target
은 이벤트 핸들러가 호출될 대상을 의미하며, 여기서는 self
를 사용하여 현재 객체에 이벤트 핸들러를 등록합니다. name
은 이벤트의 이름을 나타내며, 위에서 등록한 이벤트 이름과 일치해야 합니다. handler
는 이벤트가 발생했을 때 실행될 클로저를 정의합니다.
4. 이벤트 등록 해제하기
이벤트를 더 이상 수신하지 않으려면 다음과 같이 SwiftEventBus.unregister(target: Any)
함수를 호출하여 이벤트 등록을 해제할 수 있습니다.
SwiftEventBus.unregister(target: self)
위의 코드에서 target
에는 이벤트 등록을 해제할 대상을 지정합니다. 여기서는 self
로 현재 객체를 지정합니다.
이제 앱이 백그라운드 또는 포그라운드로 전환될 때 SwiftEventBus를 사용하여 원하는 로직을 처리할 수 있습니다.