前人未踏の領域へ アプリ開発編

Android, iOSアプリ開発に関する調査メモ置き場。ほとんどAndroid。はてなダイアリーから移行したため古い記事にはアプリ以外も含まれます。

Firebase Cloud Messagingのバックグラウンド状態でのデータメッセージの受信方法について

Firebaseの通知タイプには通知メッセージとデータメッセージの2種類があり、
どちらか一方だけを送信することも、両方送信することもできる。

それぞれのメッセージの処理のされ方はアプリがフォアグラウンドにいるかバックグラウンドにいるかによって異なる

フォアグラウンドにいる場合は必ず FirebaseMessagingServiceのonMessageReceivedが呼ばれるのでそこの引数から取得する。
一方でバックグラウンドにいる場合は通知メッセージはOS側で処理され、システムトレイに表示される。

Notifications Composerなどで送信する場合、通知メッセージとデータメッセージ両方を含むことができるが、
バックグラウンドで通知を受信した際に、データメッセージをどこで受け取れば良いのか。

Intentである。アプリ起動時に最初に呼ばれるIntentのExtraの中に他の起動パラメータなどと一緒に含まれてくる。
onMessageReceivedとは違い、通知がタップされてからじゃないと発動しないので注意。

トピックで配信された場合は以下のようにfromキーの値として取得できるのでそれで判別できるだろう。

from=/topics/トピック名