-
SwiftUI - NotificationCenterSwiftUI 2021. 9. 19. 12:06
안녕하세요. 그린입니다🟢
이번 포스팅에서는 SwiftUI에서 NotificationCenter를 활용하는 방법에 대해 학습하겠습니다🧑🏻💻
UIKit에서는 잘 알겠는데 대체 SwiftUI에서는 어떻게 노피티케이션 센터를 활용할까요?
정말 이번 포스팅은 간단합니다.
순식간에 슉~하고 끝나버리니 눈 크게 뜨고 보셔야 됩니다👀
아, 참고로 이전에 포스팅했던 스크린샷 캡쳐/녹화 감지 및 방지에 대해 UIKit으로 구현한걸 SwiftUI의
NotificationCenter를 통해 구현하는 예제로 보겠습니다👍🏻
NotificationCenter 생성
import SWiftUI struct mainView: View { let screenCapturePublisher = NotificationCenter.default.publisher(for: NSNotification.Name(UIApplication.userDidTakeScreenshotNotification.rawValue)) let screenRecordPublisher = NotificationCenter.default.publisher(for: NSNotification.Name(UIScreen.capturedDidChangeNotification.rawValue)) ... }
이렇게 어떤 노티피케이션을 발생시킬 지 생성하여 상수로 가져갑니다.
물론 이부분을 생략하고 이후 리시브 받는곳에서 해당 부분 선언을 한번에 가져가도 되지만
코드의 복잡성을 줄이기 위해 위와 같이 분리해줍니다.
Action 생성
var body: some View { VStack { ... } .onReceive(screenCapturePublisher) { _ in viewStore.send(.setDetectScreenCaptureAlert) } .onReceive(screenRecordPublisher) { _ in viewStore.send(.setDetectScreenRecordAlert) } }
이런식으로 해당 생성한 노티피케이션의 조건에 부합하여 발동되면 onRecieve를 받아 액션을 취해줄 수 있도록 해줍니다.
정말 간단하죠?
다양하게 addObserver를 통해 선언해주고 심어줄 수도 있지만 저는 위와 같이 해주었습니다.
이번 포스팅은 추석연휴을 맞이하여 너무 귀찮지만 간단하게라도 해보자! 라는 생각으로 저의 메모라 보시면 되겠습니다..🤓
참고자료를 남겨둘테니 다양한 사례들을 봐보는것도 방법일것 같습니다👍🏻
[참고자료]
https://stackoverflow.com/questions/58818046/how-to-set-addobserver-in-swiftui
'SwiftUI' 카테고리의 다른 글
ActivityView in SwiftUI (0) 2021.11.29 Rotation Animation (0) 2021.11.21 NavigationLink (0) 2021.09.11 Overlay & ZStack (2) 2021.09.10 SwiftUI (0) 2021.04.14