はじめに
NotificationCenterの通知をSwiftUIのViewで受け取る方法について、備忘も兼ねて記事に残します。
開発環境
本題
まず、post(name:object:userInfo:)を使って通知を送る。以下の実装は通知名を"didReceiveNotification"とし、userInfoを通知に含めている例。
NotificationCenter.default.post(name: Notification.Name("didReceiveNotification"), object: nil, userInfo: userInfo)
※参考
送られた通知を受け取り、受け取ったことを公開するにはpublisher(for:object:)を使う。また、SwiftUIのViewでonReceive(_:perform:)を使えば、通知を受け取った際の処理を実装できる。下記は、通知名"didReceiveNotification"の通知を受け取った際の処理を実装できるようにした例。
.onReceive(NotificationCenter.default.publisher(for: Notification.Name("didReceiveNotification"))) { notification in // do something }
※参考
-
https://developer.apple.com/documentation/foundation/notificationcenter/3329353-publisher
-
https://developer.apple.com/documentation/swiftui/view/onreceive(_:perform:)
おわりに
次回はこの記事に記載した内容を利用して、Firebase Cloud Messagingで受信したプッシュ通知を選択した時に、SwiftUIのViewで通知内容を利用する実装についてまとめてみようと思います。
参考
-
https://developer.apple.com/documentation/swiftui/view/onreceive(_:perform:)
- https://developer.apple.com/documentation/foundation/notificationcenter
-
https://developer.apple.com/documentation/foundation/notificationcenter/1410608-post
-
https://developer.apple.com/documentation/foundation/notificationcenter/3329353-publisher