2022 年 10 月 18 日に開催される Firebase Summit に、直接会場で、またはオンラインでご参加ください。Firebase を使用してアプリ開発を加速させ、自信を持ってアプリをリリースし、簡単にスケールする方法をご紹介します。 今すぐ申し込む

FlutterでFirebaseCloudMessagingクライアントアプリを設定する

次の手順に従って、Flutter で FCM クライアントをセットアップします。

プラットフォーム固有の設定と要件

必要な手順の一部は、対象のプラットフォームによって異なります。

iOS+

Xcode でアプリ機能を有効にする

アプリケーションがメッセージの受信を開始する前に、Xcode プロジェクトでプッシュ通知とバックグラウンド モードを有効にする必要があります。

  1. Xcode プロジェクト ワークスペース ( ios/Runner.xcworkspace ) を開きます。
  2. プッシュ通知を有効にします。
  3. バックグラウンド フェッチリモート通知バックグラウンド実行モードを有効にします。

APNs 認証キーをアップロードする

FCM を使用する前に、APNs 証明書を Firebase にアップロードします。 APNs 証明書をまだお持ちでない場合は、 Apple Developer Member Centerで作成してください。

  1. Firebase コンソールのプロジェクト内で、歯車アイコンを選択し、[プロジェクト設定]を選択してから、[クラウド メッセージング] タブを選択します。
  2. 開発証明書、本番証明書、またはその両方の [証明書のアップロード] ボタンを選択します。少なくとも 1 つ必要です。
  3. 証明書ごとに .p12 ファイルを選択し、パスワードがあればそれを入力します。この証明書のバンドル ID がアプリのバンドル ID と一致していることを確認してください。 [保存]を選択します。

メソッドの入れ替え

Apple デバイスで FCM Flutter プラグインを使用するには、メソッドの入れ替えを無効にしないでください。スウィズリングが必要であり、それがないと、FCM トークン処理などの主要な Firebase 機能が正しく機能しません。

アンドロイド

Google Play サービス

FCM クライアントには、Google Play サービスもインストールされている Android 4.4 以降を実行するデバイス、または Google API を使用して Android 4.4 を実行するエミュレーターが必要です。 Android アプリの展開は Google Play ストアに限定されないことに注意してください。

Play サービス SDK に依存するアプリは、Google Play サービスの機能にアクセスする前に、互換性のある Google Play サービス APK についてデバイスを常に確認する必要があります。メイン アクティビティのonCreate()メソッドとそのonResume()メソッドの 2 つの場所でこれを行うことをお勧めします。 onCreate()のチェックにより、チェックが成功しないとアプリを使用できないことが保証されます。 onResume()のチェックにより、ユーザーが戻るボタンなどの他の手段で実行中のアプリに戻った場合でも、チェックが実行されることが保証されます。

デバイスに互換性のあるバージョンの Google Play サービスがない場合、アプリはGoogleApiAvailability.makeGooglePlayServicesAvailable()を呼び出して、ユーザーが Play ストアから Google Play サービスをダウンロードできるようにすることができます。

ウェブ

FCM を使用して Web 資格情報を構成する

FCM Web インターフェイスは、「Voluntary Application Server Identification」または「VAPID」キーと呼ばれる Web 資格情報を使用して、サポートされている Web プッシュ サービスへの送信要求を承認します。アプリをプッシュ通知にサブスクライブするには、キーのペアを Firebase プロジェクトに関連付ける必要があります。 Firebase コンソールを使用して、新しいキー ペアを生成するか、既存のキー ペアをインポートできます。

新しい鍵ペアを生成する
  1. Firebase コンソールの[設定]ペインの [クラウド メッセージング] タブを開き、[ Web 構成] セクションまでスクロールします。

  2. [ Web プッシュ証明書] タブで、[キー ペアの生成] をクリックします。コンソールには、キー ペアが生成されたという通知が表示され、公開キーの文字列と追加された日付が表示されます。

既存の鍵ペアをインポートする

Web アプリで既に使用している既存のキー ペアがある場合は、それを FCM にインポートして、FCM API を介して既存の Web アプリ インスタンスに到達できるようにすることができます。キーをインポートするには、Firebase プロジェクトへの所有者レベルのアクセス権が必要です。既存の公開鍵と秘密鍵を base64 URL セーフ エンコード形式でインポートします。

  1. Firebase コンソールの[設定]ペインの [クラウド メッセージング] タブを開き、[ Web 構成] セクションまでスクロールします。

  2. [ Web プッシュ証明書] タブで、「既存のキー ペアをインポートする」というリンク テキストを見つけて選択します。

  3. [キー ペアのインポート] ダイアログで、公開キーと秘密キーを対応するフィールドに入力し、[インポート] をクリックします。コンソールには、公開鍵の文字列と追加された日付が表示されます。

キーの形式と生成方法の詳細については、「アプリケーション サーバー キー」を参照してください。

FCM プラグインをインストールする

  1. Flutter 用の Firebase プラグインをまだインストールしていない場合は、インストールして初期化します

  2. Flutter プロジェクトのルートから、次のコマンドを実行してプラグインをインストールします。

    flutter pub add firebase_messaging
    
  3. 完了したら、Flutter アプリケーションを再構築します。

    flutter run
    

登録トークンにアクセスする

特定のデバイスにメッセージを送信するには、そのデバイスの登録トークンを知る必要があります。このチュートリアルを完了するには、通知コンソールのフィールドにトークンを入力する必要があるため、トークンをコピーするか、トークンを取得した後に安全に保管してください。

アプリ インスタンスの現在の登録トークンを取得するには、 getToken()を呼び出します。通知許可が付与されていない場合、このメソッドはユーザーに通知許可を求めます。それ以外の場合は、トークンを返すか、エラーのためにフューチャーを拒否します。

final fcmToken = await FirebaseMessaging.instance.getToken();

Web プラットフォームでは、VAPID 公開鍵をgetToken()に渡します。

final fcmToken = await FirebaseMessaging.instance.getToken(vapidKey: "BKagOny0KF_2pCJQ3m....moL0ewzQ8rZu");

トークンが更新されるたびに通知を受けるには、 onTokenRefreshストリームにサブスクライブします。

FirebaseMessaging.instance.onTokenRefresh
    .listen((fcmToken) {
      // TODO: If necessary send token to application server.

      // Note: This callback is fired at each app startup and whenever a new
      // token is generated.
    })
    .onError((err) {
      // Error getting token.
    });

自動初期化を防ぐ

FCM 登録トークンが生成されると、ライブラリは識別子と構成データを Firebase にアップロードします。トークンの自動生成を防ぎたい場合は、ビルド時に自動初期化を無効にします。

iOS

iOS では、メタデータ値をInfo.plistに追加します。

FirebaseMessagingAutoInitEnabled = NO

アンドロイド

Android では、次のメタデータ値をAndroidManifest.xmlに追加して、Analytics コレクションと FCM 自動初期化を無効にします (両方を無効にする必要があります)。

<meta-data
    android:name="firebase_messaging_auto_init_enabled"
    android:value="false" />
<meta-data
    android:name="firebase_analytics_collection_enabled"
    android:value="false" />

実行時に FCM 自動初期化を再度有効にする

特定のアプリ インスタンスの自動初期化を有効にするには、 setAutoInitEnabled()を呼び出します。

await FirebaseMessaging.instance.setAutoInitEnabled(true);

この値は、一度設定するとアプリを再起動しても保持されます。

次のステップ

クライアント アプリをセットアップしたら、 Notifications composerを使用してダウンストリーム メッセージの送信を開始できます。バックグラウンド アプリにテスト メッセージを送信するを参照してください。

他のより高度な動作をアプリに追加するには、サーバーの実装が必要です。

次に、アプリ クライアントで次のようにします。