firebase-cloud-messagingfirebase-cloud-messagingを使い始める


備考

悪名高い一般的な質問は、「デバイスからデバイスに通知を送信する方法」です。悲しいことに、答えは:あなたはできません。プッシュ通知を送信するには、FCMを起動する必要があります。それは3つの異なる方法で行うことができます:

  1. Firebase Webコンソールで直接
  2. Firebaseファンクションリスナーを設定し、FCMをトリガする
  3. サーバーがFCMにプッシュ通知を送信するよう要求する

プッシュ通知は、FCMから送信される情報ペイロードです。プッシュnotificationnotificationdatanotification and datadata 3種類がnotification and data 。この情報はJSONとして表すことができます:

  {
    "to" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",
    "notification" : {
      "body" : "great match!",
      "title" : "Portugal vs. Denmark",
      "icon" : "myicon"
    },
    "data" : {
      "Nick" : "Mario",
      "Room" : "PortugalVSDenmark"
    }
  }

上記の例は、 notificationdata組み合わせた第3のタイプです。それがFCMに送信するよう求められます。

  1. コンソールは、送信することができnotificationnotificationdataが、決して唯一のdata
  2. 関数と任意のサーバーは3つのタイプを送信できます

重要性をnotificationタイプは、受信デフォルトにそれが可能なアプリケーションは、単純にライブラリをプロジェクトに追加する必要の横にさらにコーディングすることなく、Webコンソールを使用して、アプリケーションの成長を高めるために、このようなマーケティングなど他のチーム力を与えるプッシュしています。

プッシュ通知、 notificationタイプ、および視覚的通知を混同しないようにしてください。最後は、Androidクラス(通常はNotificationCompat)に対応しています。

プッシュの動作は、タイプによって、またアプリケーションがフォアグラウンドまたはバックグラウンドにある場合に異なります。フォアグラウンドではなく、最小化または閉鎖されていること。

  1. アプリがフォアグラウンドない場合、通知はデフォルトのビジュアルnotificationをトリガーします。この通知はマニフェストでカスタマイズできますドキュメントを参照してください。アプリがフォアグラウンドにある場合は、 onMessageReceivedメソッド内の動作をカスタマイズする必要があります。
  2. data型の動作は常にカスタマイズする必要があります。
  3. アプリがフォアグラウンドにない場合は、 notificationdata組み合わされてデフォルトのビジュアル通知がトリガーされ、ユーザーがクリックするとdataペイロードが利用可能になります。ランチャーアクティビティは、ビジュアル通知がクリックされたときにトリガされるため、文字通りgetIntent().getStringExtra("yourKey");そのアクティビティでデータを取得します。アプリケーションが(フォアグラウンドで)アクティブな場合は、 onMessageReceivedメソッド内の動作をカスタマイズする必要があり、すぐにdataペイロードにアクセスできます。

情報ペイロードを取得するには、 onMessageReceivedメソッド内で行う必要があります。使用可能な引数はメッセージのみです。

  1. notificationを取得するには、 remoteMessage.getNotification()を実行する必要があります。次に、対応するメソッドで本文またはタイトルを取得できます
  2. dataを取得するには、 remoteMessage.getData().get("yourKey")ます。

すべての非ヌル検証を追加することをお勧めします。アドバンスドアプリに届くいくつかのタイプの通知があります。良い方法は、 notificationdataがヌルでないかどうかを確認することです。結果的に有用な戦略は、あるフロー制御を行うためにdata通知において常にtypeキーを使用することであろう。

Firebase Webコンソールからdataを送信dataには、詳細オプションを開く必要があります。

notificationキーは制限されており、ドキュメントに示されています。 任意の型の値は、Stringのみです。

Firebaseで文書を見つけるのに問題がある場合は、ページの下部に移動して言語を「英語」に変更してください。文書は他の言語では細くなっています。

インストールまたはセットアップ

Firebase Cloud Messagingは、プッシュ通知を処理するFirebaseサービスです。このサービスを任意のクライアント(Web、Android、またはIOS)に追加できます。それぞれの特定の機能は、 ドキュメントから読み取る必要があります

どのタイプのプロジェクトでもFCMを追加するには、常にライブラリを追加します

Androidのための特別なサポートを考慮することはそれのためにいくつかの行を取る価値がある。 Android Studioを使用して新しいプロジェクトを作成し、メニューでTools / Firebaseを選択すると、Firebaseのアシスタントが起動します。 [クラウドメッセージング]を選択し、手順1と2を実行します。

  1. プロジェクトで以前に別のFirebaseサービスが追加されている場合は、手順1に完了とマークされます。そうでない場合は、実行する必要があります。最初のステップでは、Firebaseでプロジェクトを作成したり、新しいプロジェクトを作成したりすることができます。この手順では、firebaseプロジェクトに接続するための設定を持つgoogle-service.jsonファイルをダウンロードします。このファイルは "app"フォルダ内にあります。
  2. この手順では、GoogleサービスライブラリとFirebaseライブラリがgradleに追加されます。また、これらのファイルでもいくつかの追加設定が行われます。

これはプロジェクトでFCMを追加するための基礎です。この時点から、クライアントは、アプリがフォアグラウンドにない限り(通知の詳細)、「通知」ペイロードを含むFCMプッシュ通知を既に受信することができます。

クライアントでFCMの動作をさらにカスタマイズするには、2つのサービスを追加する必要があります。公式サイトで詳しく説明しています。もう一度Androidについていくつか検討します:

  1. FirebaseMessagingService を拡張し、onMessageReceivedメソッドをオーバーライドするクラスを作成する
  2. FirebaseInstanceIdService を拡張し、onTokenRefreshメソッドをオーバーライドするクラスを作成する
  3. application タグ</ intent-filter> </ intent-filter>の中で、両方のクラスをマニフェストに登録してください。

そこの唯一の引数を使用して、 notification ペイロードとdata ペイロードをonMessageReceived メソッド内で取得できます。 FCMによってFCMトークンが割り当てられると、 onTokenRefresh メソッドが呼び出されます。 FCMトークンは、アプリのインストールとデバイスの一意のIDで、プッシュ通知を直接送信するデバイスのアドレスとして使用できます。

通知のタイプと関連する動作の詳細については、備考をお読みください。