WEBサイト制作・アプリ開発・システム開発・ブランディングデザイン制作に関するご相談はお気軽にご連絡ください。
構想段階からじっくりとヒアリングし、お客様の課題にあわせたアプローチ手法でお客様の“欲しかった”をカタチにしてご提案いたします。
Blog スタッフブログ
Android
Flutter
iOS
システム開発
[Flutter]FCMプッシュ通知を受信しパラメータを処理する
こんにちは、株式会社MIXシステム開発担当のBloomです。
早速本題のFlutterでFirebase Cloud Messagingによるプッシュ通知を受信し、通知のペイロードに含まれるパラメータを処理する手順について、
お仕事の中で得た知見を共有させていただきたいと思います。
導入
まずはFlutterプロジェクトでFirebaseを利用できるように設定しましょう。
Flutter アプリに Firebase を追加する – Firebase
導入が完了したらさらにCloud Messagingの設定を行います。
Flutter で Firebase Cloud Messaging クライアント アプリを設定する – Firebase
上記手順のgetToken()まで成功し、通知を配信できるようになったらリスナーの設定に移りましょう。
パラメータ処理
では、実際に通知のパラメータを処理してみましょう。通知を処理するタイミングは以下の三つがあります。
1.アプリがフォアグラウンドにある場合
2.アプリがオンメモリの状態でバックグラウンドにあり、通知から起動された場合
3.アプリが完全に終了されている状態で通知から起動された場合
今回はこのそれぞれでパラメータを処理していきます。
void setNotificationListener() {
// 1.フォアグラウンドで受信した場合
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
print('Message data: ${message.data}');
RemoteNotification? notification = message.notification;
AndroidNotification? android = notification?.android;
AppleNotification? ios = notification?.apple;
if (notification != null) {
if (ios != null) {
// iOS用の処理はこちらで行います。AppleNotificationクラスにはbadgeなどが含まれます。
}
if (android != null) {
// Android用の処理はこちらで行います。
}
// 共通のデータペイロードです。パラメータ処理はここから行います。
var data = message?.data;
if (data != null) {
// 辞書型でデータを取り出せます。
var value = data["key"];
}
}
});
// 2.アプリがオンメモリの状態で通知から起動した場合
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
print('onMessageOpenedApp Message data: ${message}');
var data = message?.data;
if (data != null) {
var value = data["key"];
}
});
// 3.アプリが完全に終了している状態で通知から起動した場合
FirebaseMessaging.instance.getInitialMessage().then((message) {
print('getInitialMessage Message data: ${message}');
var data = message?.data;
if (data != null) {
var value = data["key"];
}
});
}
これだけでプッシュ通知のペイロードを処理できました。良かったですね。