【Flutter】firebase_messagingで通知を実装

Flutter

firebase_messagingとは

firebase_messagingは、Firebase Cloud Messaging(FCM)APIを使用するためのFlutterプラグインです。このプラグインを使用することで、Android、iOS、Web向けに信頼性の高いメッセージングソリューションを提供します。

firebase_messaging | Flutter Package
Flutter plugin for Firebase Cloud Messaging, a cross-platform messaging solution that lets you reliably deliver messages...

使い方

インストール方法

  1. pubspec.yamlファイルに依存関係を追加します。
dependencies:
  firebase_messaging: ^14.9.4

Firebaseプロジェクトの設定

Firebaseプロジェクトを作成し、Flutterアプリと連携する必要があります。以下は、Firebaseプロジェクトの設定手順の概要です。

  1. Firebaseコンソールにアクセスし、新しいプロジェクトを作成します。
  2. プロジェクトにアプリ(iOS、Android、Webなど)を追加し、Firebase SDKを設定します。
  3. google-services.json(Android)またはGoogleService-Info.plist(iOS)ファイルをFlutterプロジェクトに追加します。

詳細な手順については、公式ドキュメントを参照してください。

基本的な使用方法

FCMの初期化

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  Firebase.initializeApp();
  runApp(MyApp());
}

トークンの取得

デバイスに送信するためのトークンを取得します。

FirebaseMessaging messaging = FirebaseMessaging.instance;

Future<void> getToken() async {
  String? token = await messaging.getToken();
  print('FCM Token: $token');
}

フォアグラウンドメッセージの処理

アプリがフォアグラウンドにあるときに受信したメッセージを処理します。

FirebaseMessaging.onMessage.listen((RemoteMessage message) {
  print('Received a message in the foreground!');
  print('Message data: ${message.data}');

  if (message.notification != null) {
    print('Message also contained a notification: ${message.notification}');
  }
});

バックグラウンドメッセージの処理

アプリがバックグラウンドまたは終了しているときに受信したメッセージを処理します。

Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  await Firebase.initializeApp();
  print('Handling a background message: ${message.messageId}');
}

FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);

パラメータ詳細

getToken

  • 戻り値:デバイスのFCMトークン(String?)

onMessage

  • リスナー:フォアグラウンドで受信したメッセージを処理するためのコールバック。

onBackgroundMessage

  • ハンドラー:バックグラウンドまたは終了状態で受信したメッセージを処理するための非同期関数。

エラー処理

Firebaseメッセージングの操作中にエラーが発生する可能性があります。エラーが発生した場合、適切に処理することが重要です。

try {
  // メッセージング操作
} catch (e) {
  print('Error: $e');
}

Buy me a coffee!

Flutterアプリ開発
シェアする
sogaをフォローする
タイトルとURLをコピーしました