背景
業務でFCMの話題になると、毎回仕様を忘れてしまって調べ直しになるのでまとめました。
(公式ドキュメントを熟読して整理した内容です。実機での確認ができていないので、実際の動作と違っている場合はご指摘いただけると幸いです。)
送信するデータについて
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification":{
"title":"Portugal vs. Denmark",
"body":"great match!"
},
"data" : {
"Nick" : "Mario",
"Room" : "PortugalVSDenmark"
}
}
}
-
notificationはコンソールから送信する場合は必須。 -
dataは任意で好きな値を入れられる。
notificationのtitleとbodyはコンソールで言うとこの2つのフォームです。

dataはコンソールで言うと下記のカスタムデータのフォームです。

通知の種類について
通知メッセージとデータメッセージの2種類がある。
- JSONに
notificationが含まれる場合は通知メッセージとして扱われ、プッシュ通知はSDK側で自動表示される。 - JSONに
notificationが含まれない場合はデータメッセージとして扱われ、アプリがプッシュ通知を自前で作って表示させる必要がある。
※ここで言うプッシュ通知とは、端末の通知領域に表示されるViewのことです。
通知メッセージの表示制御とデータ処理について
通知メッセージはアプリがフォアグラウンド/バックグラウンドどちらにいるかによって、表示制御の仕方とデータ処理のタイミングが変わる。
-
バックグラウンドの場合は、プッシュ通知はSDK側で自動表示される。dataに入れた任意の値はプッシュ通知をタップした後でアプリが自前で処理可能。 -
フォアグラウンドの場合は、アプリがプッシュ通知を自前で作って表示させる。(notificationが含まれていない場合(データメッセージ)と同様。)
参考