Firebase コンソールでメッセージを送信する

Firebase コンソールの Notifications Composer を使用して通知メッセージを送信できます。Admin SDKHTTP / XMPP プロトコルでメッセージを送信する場合と比べると、柔軟性やスケーラビリティの点で劣りますが、テスト目的やターゲットを絞り込んだマーケティング、ユーザー エンゲージメントには便利な方法です。Firebase コンソールは、マーケティング メッセージの改善に役立つ、アナリティクスに基づく A/B テスト機能を提供します。

アプリ側でメッセージを受信するロジックを開発しておけば、技術的に詳しくないユーザーでも、Firebase ヘルプセンターの Notifications ページの手順に沿ってメッセージを送信できます。

概要

Notifications Composer からメッセージを送信する場合、Google はフォームのフィールドに入力された値を次の方法で使用します。

  • [ユーザー セグメント] や [有効期限] などのフィールドによってメッセージのターゲットと配信オプションを決定します。
  • [通知テキスト] や [カスタムデータ] などのフィールドは、Key-Value ペアで構成されたペイロードでクライアントに送信されます。

これらのフィールドは、FCM サーバー プロトコルで使用可能なキーにマップされます。たとえば、[カスタムデータ] に入力された Key-Value ペアは、通知のデータ ペイロードとして処理されます。他のフィールドは FCM 通知ペイロードのキーに直接マッピングされます。

Notifications Composer の一部のフィールドは FCM サーバー プロトコルでは使用できません。たとえば、アプリのバージョン、言語、ブラウザの種類やバージョン、ユーザー プロパティなど、サーバー API の to フィールドでは実現できない方法で特定のユーザー セグメントをメッセージのターゲットに設定できます。

Firebase コンソールからクライアントに送信されるキーには次のものがあります。

キー コンソール フィールドのラベル 説明
notification.title 通知のタイトル 通知のタイトルを示します。
notification.body 通知テキスト 通知の本文テキストを示します。
data カスタムデータ 定義した Key-Value ペア。これらのペアは、処理するアプリのデータ ペイロードとして配信されます。

メッセージの配信を決定するキーには次のものが含まれます。

キー コンソール フィールドのラベル 説明
sound 通知音

デバイスが通知を受信したときに再生する通知音を示します。

time_to_live 有効期限

このパラメータでは、デバイスがオフラインの場合にメッセージを FCM のストレージに保持する期間(秒単位)を指定します。詳細については、メッセージの有効期間の設定をご覧ください。

監査ログ

このページでは、Cloud 監査ログの一部として Firebase によって作成される監査ログについて説明します。

概要

Firebase サービスは、「誰がいつどこで何をしたか」を調べるために役立つ監査ログを記録します。これらは Cloud 監査ログであり、Firebase プロジェクトに接続されている GCP プロジェクトの一部として提供されます。各 Firebase プロジェクトで記録されるのは、そのプロジェクト内に直接存在するリソースの監査ログのみです。

Cloud 監査ログの概要については、Cloud 監査ログをご覧ください。Cloud 監査ログの詳細については、監査ログについてをご覧ください。

Cloud 監査ログでは、GCP のプロジェクト、フォルダ、組織ごとに次の 3 つの監査ログが維持されます。

  • 管理アクティビティ監査ログ
  • データアクセス監査ログ
  • システム イベント監査ログ

Firebase Notifications コンソールでは、明示的に有効にした場合に限り、データアクセス監査ログが書き込まれます。データアクセス監査ログには、リソースの構成やメタデータを読み取る API 呼び出しや、ユーザー提供のリソースデータの作成、変更、読み取りを行うユーザー主導の API 呼び出しが含まれます。データアクセス監査ログは、一般公開されているリソース(すべてのユーザーまたは認証済みのすべてのユーザーが利用可能)や、GCP にログインせずにアクセスできるリソースのデータアクセス オペレーションを記録しません。

Firebase Notifications コンソールでは、管理アクティビティ監査ログは書き込まれません。

Firebase Notifications コンソールでは、システム イベント監査ログは書き込まれません。

監査対象のオペレーション

Firebase Notifications コンソールの各監査ログタイプに対応する API オペレーションの概要は、次のとおりです。

監査ログのカテゴリ Firebase Notifications コンソール操作 タイプ名(UI でログを検索する場合に使用)
データアクセス ログ(DATA_READ) キャンペーンを取得する GetCampaign
データアクセス ログ(DATA_READ) キャンペーンのリストを取得する ListCampaign
データアクセス ログ(DATA_READ) ABT テスト通知から情報を取得する LegacyGetRollout
データアクセス ログ(DATA_READ) ターゲティングの候補を取得する GetAudiences
データアクセス ログ(DATA_READ) FCM の統計情報(送信済み / 既読 / 配信済み / 変換済みの数)を取得する GetFcmStats
データアクセス ログ(DATA_READ) 期間とプロジェクトのアナリティクス ラベルのリストを取得する GetAnalyticsLabelList
データアクセス ログ(DATA_WRITE) キャンペーンを作成する CreateCampaign
データアクセス ログ(DATA_WRITE) キャンペーンを削除する DeleteCampaign
データアクセス ログ(DATA_WRITE) キャンペーンを更新する UpdateCampaign
データアクセス ログ(DATA_WRITE) ABT からロールアウトを作成する LegacyCreateRollout

監査ログ形式

Cloud Logging でログビューア、Cloud Logging API、Cloud SDK を使用して表示できる監査ログエントリには、次のオブジェクトがあります。

  • ログエントリ自体。LogEntry 型のオブジェクトです。よく使用されるフィールドは次のとおりです。

    • logName: プロジェクト ID と監査ログタイプが格納されます。
    • resource: 監査対象オペレーションのターゲットが格納されます。
    • timeStamp: 監査対象オペレーションの時間が格納されます。
    • protoPayload: 監査情報が格納されます。
  • 監査ロギングデータ。ログエントリの protoPayload フィールドに保持される AuditLog オブジェクトです。

  • サービス固有の監査情報(省略可)。AuditLog オブジェクトの serviceData フィールドに保持されるサービス固有のオブジェクトです。詳細は、サービス固有の監査データをご覧ください。

これらのオブジェクトのその他のフィールドと、それらを解釈する方法については、監査ログについてをご覧ください。

ログ名

Cloud 監査ログのリソース名は、監査ログを所有するプロジェクトまたは他のエンティティを表します。この名前を見ると、ログに管理アクティビティ、データアクセス、システム イベントの監査ログデータが含まれているかどうかがわかります。たとえば、次のログ名はプロジェクトの管理アクティビティ監査ログと組織のデータアクセス監査ログを表しています。

projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity
organizations/[ORGANIZATION_ID]/logs/cloudaudit.googleapis.com%2Fdata_access

サービス名

Firebase Notifications コンソールの監査ログでは、サービス名 gcmcontextualcampaign-pa.googleapis.com が使用されます。

ロギング サービスの詳細については、サービスとリソースのマッピングをご覧ください。

リソースタイプ

Firebase Notifications コンソールの監査ログでは、すべての監査ログに対してリソースタイプ audited_resource が使用されます。

一覧については、モニタリング対象リソースタイプをご覧ください。

監査ログの有効化

データアクセス監査ログはデフォルトで無効になっており、明示的に有効にしない限り書き込まれません(例外は BigQuery のデータアクセス監査ログで、これは無効にすることができません)。

データアクセス監査ログの一部または全部を有効にする方法については、データアクセス ログの構成をご覧ください。

データアクセス監査ログを有効にすると、Cloud のログの料金に影響する可能性があります。このページの料金を確認してください。

Firebase Notifications コンソールでは、管理アクティビティ監査ログは書き込まれません。

監査ログに関する権限

監査ログを表示またはエクスポートできるかは、Cloud Identity and Access Management の権限とロールによって決まります。ログは、プロジェクト内またはその他のエンティティ(組織、フォルダ、請求先アカウントなど)内に存在します。詳しくは、ロールについてをご覧ください。

データアクセス監査ログを表示するには、監査ログを含むプロジェクト内でユーザーが次のいずれかのロールを持っている必要があります。

組織などのプロジェクト以外のエンティティからの監査ログを使用する場合は、プロジェクトのロールを適切な組織のロールに変更します。

ログを表示

監査ログエントリを表示する方法はいくつかあります。

基本ビューア

GCP Console でログビューアの基本的なインターフェースを使用して、監査ログエントリを取得できます。手順は次のとおりです。

  1. GCP Console の [Logging] > [ログ](ログビューア)ページに移動します。

    ログビューア ページに移動

  2. ページの上部で既存の GCP プロジェクトを選択するか、新しいプロジェクトを作成します。

  3. 最初のプルダウン メニューで、監査ログを表示するリソースタイプを選択します。特定のリソースを選択するか、Global を使用してすべてのリソースを選択できます。

  4. 2 番目のプルダウン メニューで、表示するログの種類として、activity(管理アクティビティ監査ログ)、data_access(データアクセス監査ログ)、system_events(システム イベント監査ログ)を選択します。

    これらのオプションがどれも表示されない場合は、そのタイプの監査ログはプロジェクトに存在しません。

高度なビューア

GCP Console でログビューアの高度なインターフェースを使用して、監査ログエントリを取得できます。手順は次のとおりです。

  1. GCP Console の [Logging] > [ログ](ログビューア)ページに移動します。

    ログビューア ページに移動

  2. ページの上部で既存の GCP プロジェクトを選択するか、新しいプロジェクトを作成します。

  3. 最初のプルダウン メニューで、監査ログを表示するリソースタイプを選択します。特定のリソース、またはすべてのリソースに対して Global を選択できます。

  4. 検索フィルタ ボックスの右端にあるプルダウン矢印(▼)をクリックして、[高度なフィルタに変換] を選択します。

  5. 表示するログエントリを詳細に指定するフィルタを作成します。プロジェクト内のすべての監査ログを取得するには、次のフィルタを追加します。それぞれのログ名の中で有効な [PROJECT_ID] を指定します。

      logName = ("projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity" OR
          OR "projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fsystem_events"
          OR "projects/[PROJECT_ID]logs/cloudaudit.googleapis.com%2Fdata_access")
    

    フィルタの詳細については、高度なログフィルタをご覧ください。

API

Cloud Logging API を使用して監査ログエントリを表示するには:

  1. entries.list メソッドのドキュメント内の [Try this API] セクションに移動します。

  2. [Try this API] フォームのリクエストの本文に、次のコードを入力します。この事前入力されたフォームをクリックするとリクエストの本文が自動的に入力されますが、それぞれのログ名に有効な [PROJECT_ID] を指定する必要があります。

      {
        "resourceNames": [
          "projects/[PROJECT_ID]"
        ],
        "pageSize": 5,
        "filter": "logName=(projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity OR projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fsystem_events OR projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fdata_access)"
      }
    
  3. [実行] をクリックします。

クエリの詳細については、高度なログクエリをご覧ください。

SDK

Cloud SDK を使用してログエントリを読み取るには、次のコマンドを実行します。それぞれのログ名の中で有効な [PROJECT_ID] を指定します。

gcloud logging read "logName=(projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity OR projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fsystem_events OR projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fdata_access)"

Cloud SDK の使用の詳細については、ログエントリの読み取りをご覧ください。

監査ログエントリのサンプルと、その中に記載されている最も重要な情報を見つける方法については、監査ログについてをご覧ください。

監査ログのエクスポート

監査ログは、他の種類のログをエクスポートする場合と同じ方法でエクスポートできます。ログをエクスポートする方法の詳細については、ログのエクスポートをご覧ください。監査ログのエクスポートに関する応用例の一部を以下に示します。

  • 監査ログを長期間保持するか、より強力な検索機能を使用するには、監査ログのコピーを Google Cloud Storage、BigQuery、Google Cloud Pub/Sub にエクスポートします。Cloud Pub/Sub を使用すると、他のアプリケーション、他のリポジトリ、サードパーティ製品にエクスポートできます。

  • 組織全体の監査ログを管理するには、組織内の一部またはすべてのプロジェクトからログをエクスポートできる集約エクスポート シンクを作成します。

  • 有効にしたデータアクセス監査ログが原因でプロジェクトのログ割り当て量を超過した場合は、データアクセス監査ログをエクスポートして Logging から除外できます。詳しくは、ログの除外をご覧ください。

料金

明示的にリクエストしたデータアクセス監査ログについては課金されます。Firebase Notifications コンソールでは、管理アクティビティ監査ログやシステム イベント監査ログは書き込まれません。

監査ログの料金の詳細については、Cloud の料金をご覧ください。