NotificationCenter는 이름 그대로 알림을 중앙에서 관리하는 시스템으로, 어떤 이벤트가 발생하면 그 정보를 '알림'으로 전달하고 이를 수신하는 '옵저버'들이 해당 이벤트에 대응하는 동작을 수행하는 방식입니다. 예를 들면, 키보드가 나타나는 시점, 앱이 백그라운드로 이동하는 시점 등 특정 시점에서 동작을 수행하도록 설정할 수 있습니다. NotificationCenter를 이해하고 잘 활용한다면, 앱의 다양한 이벤트를 효과적으로 관리할 수 있습니다. 오늘은 이 처럼 사용자가 직접 정의해서 알림을 보내(POST)는 형식이 아닌 앱의 특정 상태 변화나 시스템 이벤트를 감지하여 알림이 발생되는 시스템 노티피케이션을 몇 가지 소개하려고 합니다.
1. 앱이 활성화 되었을 때
NotificationCenter.default.addObserver(self, selector: #selector(appDidBecomeActive), name: UIApplication.didBecomeActiveNotification, object: nil)
2. 앱이 비활성화 되었을 때
NotificationCenter.default.addObserver(self, selector: #selector(appWillResignActive), name: UIApplication.willResignActiveNotification, object: nil)
3. 앱이 백그라운드로 들어갈 때
NotificationCenter.default.addObserver(self, selector: #selector(appDidEnterBackground), name: UIApplication.didEnterBackgroundNotification, object: nil)
4. 앱이 포어그라운드로 들어올 때
NotificationCenter.default.addObserver(self, selector: #selector(appWillEnterForeground), name: UIApplication.willEnterForegroundNotification, object: nil)
5. 키보드가 나타났을 때
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil)
6. 키보드가 사라졌을 때
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)
7. 디바이스의 배터리 상태가 변했을 때
NotificationCenter.default.addObserver(self, selector: #selector(batteryStateDidChange), name: UIDevice.batteryStateDidChangeNotification, object: nil)
8. 디바이스의 방향이 변했을 때
NotificationCenter.default.addObserver(self, selector: #selector(orientationDidChange), name: UIDevice.orientationDidChangeNotification, object: nil)
9. 사용자가 앱 설정을 변경했을 때
NotificationCenter.default.addObserver(self, selector: #selector(userDefaultsDidChange), name: UserDefaults.didChangeNotification, object: nil)
많이 사용된다고 생각하는 시스템 알림을 몇가지 적어보았습니다. 물론 이외에도 많이 있기에 찾아보시고 사용하시면 되겠습니다.
이것으로 "앱의 다양한 상황에 대응하자, NotificationCenter 시스템 노티피케이션"에 대한 포스팅을 마치겠습니다. 질문이나 의견이 있다면 아래 댓글로 남겨주세요. 감사합니다!
'Swift' 카테고리의 다른 글
[Swift] UISwipeGestureRecognizer로 스와이프 제스처 활용하기! (0) | 2023.06.26 |
---|---|
[Swift] 앱의 실시간 반응성 향상, KVO(Key-Value Observing)가 해결했다 (0) | 2023.06.26 |
[Swift] 숫자를 간편하게 'K', 'M' 단위로 표현하는 방법 (0) | 2023.06.23 |
[Swift] 작업 진행도를 손쉽게 시각화하자: UIProgressView 활용법 (0) | 2023.06.23 |
[Swift] SF Symbols: 애플의 아이콘 세계를 탐험하다 (0) | 2023.06.22 |