Swift・iOS

Swiftを中心に学んだことを記録に残すブログです。技術に関係ない記事もたまに書いています。

【SwiftUI】NotificationCenterの通知をSwiftUIのViewで受け取る方法

 

はじめに

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
}

※参考

 

おわりに

次回はこの記事に記載した内容を利用して、Firebase Cloud Messagingで受信したプッシュ通知を選択した時に、SwiftUIのViewで通知内容を利用する実装についてまとめてみようと思います。

 

参考