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.
}
メッセージを受信して処理する
メッセージを受信するには、Listener クラスで 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"
になります。メッセージは、次の理由で削除されます。
FCM サーバーに格納されているメッセージが多すぎる場合。
デバイスがオフラインのときに、アプリのサーバーが折りたたみ不可のメッセージを FCM サーバーに大量に送信すると、この問題が発生します。
アプリサーバーが、長時間接続されていないデバイスのアプリに最近(過去 4 週間以内)メッセージを送信した場合。
この呼び出しの受信後に、アプリとアプリサーバーとの完全同期を行うことをおすすめします。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-08-29 UTC。
[null,null,["最終更新日 2025-08-29 UTC。"],[],[],null,["To receive simple downstream messages, each client app needs to implement the\nmethods on the\n[firebase::messaging::Listener](/docs/reference/cpp/class/firebase/messaging/listener)\nAPI.\n\nInitialize FCM\n\nBefore you can use FCM to get access to your registration token or receive messages it must be initialized.\n\nTo initialize FCM, call\n[::firebase::messaging::Initialize](/docs/reference/cpp/namespace/firebase/messaging#initialize)\nand supply it with your\n[::firebase::App](/docs/reference/cpp/class/firebase/app)\nobject as well as an implementation of the\n[::firebase::messaging::Listener](/docs/reference/cpp/class/firebase/messaging/listener)\nclass. \n\n```c++\nMyListener my_listener_implementation;\n::firebase::messaging::Initialize(app, &my_listener_implementation);\n```\n\nAccess the registration token\n\nOn initial startup of your app, the FCM SDK generates a registration\ntoken for the client app instance. If you want to target single devices, or\ncreate device groups for FCM, you'll need to access this token.\n\nYou can access the token's value through the\n[::firebase::messaging::Listener::OnTokenReceived](/docs/reference/cpp/class/firebase/messaging/listener#ontokenreceived)\nvirtual function. \n\n```c++\nvoid OnTokenReceived(const char* token) {\n LogMessage(\"The registration token is `%s`\", token);\n\n // TODO: If necessary send token to application server.\n}\n```\n\nReceive and handle messages\n\nTo receive messages, your Listener class must implement the\n[OnMessage](/docs/reference/cpp/class/firebase/messaging/listener#onmessage)\nvirtual function.\n\nOverride `OnMessage`\n\nBy overriding the method\n[::firebase::messaging::Listener::OnMessage](/docs/reference/cpp/class/firebase/messaging/listener#onmessage),\nyou can perform actions based on the received message and get the message data: \n\n```c++\nvoid OnMessage(const ::firebase::messaging::Message& message) {\n LogMessage(TAG, \"From: %s\", message.from.c_str());\n LogMessage(TAG, \"Message ID: %s\", message.message_id.c_str());\n}\n```\n\nMessages can represent different kinds of incoming data. Most commonly,\nmessages are sent to the app after being initiated by the developer. Messages\nare also sent to you app to represent message sent events, message send error\nevents, and messages deleted events. These special events can be differentiated\nby checking the `Message::message_type` field.\n\nMessages Deleted\n\nSent to your app when the FCM server deletes pending messages.\n`Message::message_type` will be `\"deleted_messages\"`. Messages may be delete due\nto:\n\n1. Too many messages stored on the FCM server.\n\n This can occur when an app's servers send a bunch of non-collapsible\n messages to FCM servers while the device is offline.\n2. The device hasn't connected in a long time and the app server has\n recently (within the last 4 weeks) sent a message to the app on that\n device.\n\n It is recommended that the app do a full sync with the app\n server after receiving this call."]]