Open2

Flutterでプッシュ通知を取り扱う上でのまとめ

welchiwelchi

Flutterでプッシュ通知を扱う上での知見をまとめていく

welchiwelchi

2つのメッセージタイプ(通知メッセージ と データメッセージ)

FCMでは 通知メッセージ(notification)、データメッセージ(data)の2タイプのメッセージを送信することができる。

// サンプルペイロード
{
 notification: {title: 通知のタイトル, body: 通知の本文}, // 通知メッセージ
 data: {body: 通知の本文, title: 通知のタイトル} // データメッセージ
}

通知メッセージは、クライアントアプリに代わり、FCM SDKによって自動で処理される。
データメッセージはクライアントアプリによって処理される。

注意点として、アプリがフォアグラウンドにある時は、 アプリは onMessage()にて、通知メッセージもデータメッセージも受け取れる。

 _firebaseMessaging.configure(
      // アプリがフォアグラウンドな状態で通知を受け取った
      onMessage: (message) {
        print(message);
        // {notification: {title: 通知のタイトル, body: 通知の本文}, data: {body: 通知の本文, title: 通知のタイトル}}

      },
}

けれども、アプリがバックグラウンドにあり、届いた通知をタップしてアプリを開いた場合など、通知メッセージは空になってしまう。

 _firebaseMessaging.configure(
      // アプリがバックグラウンドから復帰
      onResume: (message) {
        print(message);
        // {notification: {}, data: {collapse_key: ... body: 通知の本文, title: 通知のタイトル, google.message_id:...}
      },
}

FCM メッセージについて  |  Firebase
FirebaseCloudMessaging(FCM)を使って、Flutterでプッシュ通知を実装するまとめ|うぇるち|note