C++ クライアント アプリでのメッセージの受信

単純なダウンストリーム メッセージを受信するには、各クライアント アプリで firebase::messaging::Listener API のメソッドを実装する必要があります。

FCM を初期化する

FCM を使用して登録トークンへのアクセスやメッセージの受信を行えるようにする前に、FCM を初期化する必要があります。

FCM を初期化するには、::firebase::messaging::Initialize を呼び出して、::firebase::App オブジェクトと ::firebase::messaging::Listener クラスの実装を渡します。

MyListener my_listener_implementation;
::firebase::messaging::Initialize(app, &my_listener_implementation);

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

アプリを初めて起動すると、クライアント アプリのインスタンスの登録トークンが FCM SDK によって生成されます。単一の端末を対象とするか、FCM の端末グループを作成する場合は、このトークンにアクセスする必要があります。

トークンの値にアクセスするには、::firebase::messaging::Listener::OnTokenReceived 仮想関数を使用します。

void OnTokenReceived(const char* token) {
  LogMessage("The registration token is `%s`", token);

  // TODO: If necessary send token to application server.
}

メッセージを受信して処理する

メッセージを受信するには、リスナークラスで OnMessage 仮想関数を実装する必要があります。

OnMessage のオーバーライド

::firebase::messaging::Listener::OnMessage メソッドをオーバーライドすると、受信メッセージに基づいて操作を実行し、メッセージ データを取得することができます。

void OnMessage(const ::firebase::messaging::Message& message) {
  LogMessage(TAG, "From: %s", message.from.c_str());
  LogMessage(TAG, "Message ID: %s", message.message_id.c_str());
}

メッセージは、さまざまな種類の受信データを表します。大半のメッセージは、デベロッパーが主体的にアプリに送信するものです。一方で、メッセージ送信イベント、メッセージ送信エラーイベント、メッセージ削除イベントを表すメッセージもアプリに送信されます。これらの特別なイベントは、Message::message_type フィールドで見分けることができます。

メッセージ削除

FCM サーバーが保留中のメッセージを削除したときに、アプリに送信されます。 Message::message_type"deleted_messages" になります。メッセージが削除される理由は次のとおりです。

  1. FCM サーバーに格納されているメッセージが多すぎる場合。

    デバイスがオフラインのときに、アプリのサーバーが折りたたみ不可のメッセージを FCM サーバーに大量に送信すると、この問題が発生します。

  2. アプリサーバーが、長時間接続されていないデバイスのアプリに最近(過去 4 週間以内)メッセージを送信した場合。

    この呼び出しの受信後に、アプリとアプリサーバーとの完全同期を行うことをおすすめします。

イベント送信

アップストリーム メッセージが FCM 接続サーバーに正常に送信されたときに呼び出されます。Message::message_type"send_event" になります。

送信エラー

アップストリーム メッセージの送信中にエラーが発生すると、呼び出されます。 Message::message_type"send_error" になります。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。