REST Resource: projects.messages

リソース: Message

Firebase Cloud Messaging Service によって送信されるメッセージ。

JSON 表現
{
  "name": string,
  "data": {
    string: string,
    ...
  },
  "notification": {
    object (Notification)
  },
  "android": {
    object (AndroidConfig)
  },
  "webpush": {
    object (WebpushConfig)
  },
  "apns": {
    object (ApnsConfig)
  },
  "fcm_options": {
    object (FcmOptions)
  },

  // Union field target can be only one of the following:
  "token": string,
  "topic": string,
  "condition": string
  // End of list of possible types for union field target.
}
フィールド
name

string

出力のみ。送信されたメッセージの識別子(projects/*/messages/{message_id} 形式)。

data

map (key: string, value: string)

入力のみの任意の Key-Value ペイロード。UTF-8 でエンコードする必要があります。予約語(「from」、「message_type」、または「google」や「gcm」で始まる単語)は使用できません。データ フィールドのみを含むペイロードを iOS デバイスに送信する場合、ApnsConfig では通常の優先度("apns-priority": "5")のみが許可されます。

"key": value ペアのリストを含むオブジェクト。例: { "name": "wrench", "mass": "1.3kg", "count": "3" }

notification

object (Notification)

入力のみのすべてのプラットフォームで使用できる基本的な通知テンプレート。

android

object (AndroidConfig)

入力のみのFCM 接続サーバーを介して送信されるメッセージに関する Android 固有のオプション。

webpush

object (WebpushConfig)

入力のみのWebpush プロトコル オプション。

apns

object (ApnsConfig)

入力のみのApple Push Notification Service 固有のオプション。

fcm_options

object (FcmOptions)

入力のみのすべてのプラットフォームで使用する FCM SDK 機能オプションのテンプレート。

共用体フィールド target。必須。入力のみのメッセージの送信先ターゲット。target は次のいずれかになります。
token

string

メッセージの送信先となる登録トークン。

topic

string

メッセージの送信先となるトピック名(例: 「weather」)。注: 接頭辞「/topics/」は指定しないでください。

condition

string

メッセージを送信する条件(例: 「'foo' in tasks && 'bar' in tasks」など)。

通知

すべてのプラットフォームで使用できる基本的な通知テンプレート。

JSON 表現
{
  "title": string,
  "body": string,
  "image": string
}
フィールド
title

string

通知のタイトル。

body

string

通知の本文。

image

string

デバイスにダウンロードされて通知に表示される画像の URL が含まれます。JPEG、PNG、BMP はすべてのプラットフォームで完全にサポートされています。アニメーション GIF と動画は iOS でのみご利用いただけます。WebP と HEIF のサポートレベルは、プラットフォームとプラットフォームのバージョンによって異なります。Android の画像サイズの上限は 1 MB です。Firebase Storage でイメージをホストする場合の割り当て使用量と影響/費用: https://firebase.google.com/pricing

AndroidConfig

FCM 接続サーバーを介して送信されるメッセージに関する Android 固有のオプション。

JSON 表現
{
  "collapse_key": string,
  "priority": enum (AndroidMessagePriority),
  "ttl": string,
  "restricted_package_name": string,
  "data": {
    string: string,
    ...
  },
  "notification": {
    object (AndroidNotification)
  },
  "fcm_options": {
    object (AndroidFcmOptions)
  },
  "direct_boot_ok": boolean
}
フィールド
collapse_key

string

閉じることができるメッセージのグループの識別子。配信を再開できるときに最後のメッセージだけが送信されます。一度に最大 4 つの異なる折りたたみキーを使用できます。

priority

enum (AndroidMessagePriority)

メッセージの優先度。「normal」と「high」の値を指定できます。詳細については、メッセージの優先度の設定をご覧ください。

ttl

string (Duration format)

デバイスがオフラインの場合にメッセージを FCM のストレージに保持する期間(秒)。サポートされる最大有効期間は 4 週間です。設定しない場合、デフォルト値は 4 週間です。メッセージをすぐに送信する場合は 0 に設定します。JSON 形式では、Duration 型はオブジェクトではなく文字列としてエンコードされます。この場合、文字列の最後には秒を示す s が付加され、その前に秒数が続き、小数点以下の秒数を表すナノ秒が付きます。たとえば、0 ナノ秒の 3 秒は JSON 形式で「3s」としてエンコードする必要がありますが、3 秒と 1 ナノ秒は JSON 形式で「3.000000001s」と表現する必要があります。ttl は秒単位に切り捨てられます。

s で終わる小数 9 桁までの秒単位の期間。例: "3.5s"

restricted_package_name

string

アプリケーションのパッケージ名。メッセージを受信するために登録トークンが一致する必要があります。

data

map (key: string, value: string)

任意の Key-Value ペイロード。存在する場合は、google.firebase.fcm.v1.Message.data がオーバーライドされます。

"key": value ペアのリストを含むオブジェクト。例: { "name": "wrench", "mass": "1.3kg", "count": "3" }

notification

object (AndroidNotification)

Android デバイスに送信する通知。

fcm_options

object (AndroidFcmOptions)

Android 用 FCM SDK に用意されている機能のオプション。

direct_boot_ok

boolean

true に設定した場合、デバイスがダイレクト ブート モードのときにアプリにメッセージを配信できます。ダイレクト ブート モードをサポートするをご覧ください。

AndroidMessagePriority

Android デバイスに送信するメッセージの優先度。この優先度は、メッセージの配信タイミングを制御する FCM の概念です。FCM ガイドをご覧ください。さらに、AndroidNotification.NotificationPriority を使用すると、対象の Android デバイスでの通知表示の優先度を決定できます。

列挙型
NORMAL データ メッセージのデフォルトの優先度。優先度が標準のメールの場合、スリープ状態のデバイスではネットワーク接続が開かれず、バッテリーを節約するために配信が遅延することがあります。新着メールやその他の同期するデータの通知など、緊急性の低いメッセージの場合は、通常の配信優先度を選択します。
HIGH 通知メッセージのデフォルトの優先度。FCM は、可能な場合はスリープ状態のデバイスを復帰させ、アプリサーバーへのネットワーク接続を開くことができるように、優先度の高いメッセージの即時配信を試行します。たとえば、インスタント メッセージ、チャット、音声通話アラートを使用するアプリでは、ネットワーク接続を開いて、FCM が遅延なくデバイスにメッセージを配信するようにする必要があります。メッセージが緊急を要するもので、ユーザーの即時対応が必要な場合は、優先度を高く設定します。ただし、優先度を高く設定すると、通常の優先度のメッセージに比べてバッテリーの消耗が早くなります。

AndroidNotification

Android デバイスに送信する通知。

JSON 表現
{
  "title": string,
  "body": string,
  "icon": string,
  "color": string,
  "sound": string,
  "tag": string,
  "click_action": string,
  "body_loc_key": string,
  "body_loc_args": [
    string
  ],
  "title_loc_key": string,
  "title_loc_args": [
    string
  ],
  "channel_id": string,
  "ticker": string,
  "sticky": boolean,
  "event_time": string,
  "local_only": boolean,
  "notification_priority": enum (NotificationPriority),
  "default_sound": boolean,
  "default_vibrate_timings": boolean,
  "default_light_settings": boolean,
  "vibrate_timings": [
    string
  ],
  "visibility": enum (Visibility),
  "notification_count": integer,
  "light_settings": {
    object (LightSettings)
  },
  "image": string,
  "proxy": enum (Proxy)
}
フィールド
title

string

通知のタイトル。存在する場合は、google.firebase.fcm.v1.Notification.title がオーバーライドされます。

body

string

通知の本文。存在する場合は、google.firebase.fcm.v1.Notification.body がオーバーライドされます。

icon

string

通知のアイコン。ドローアブル リソース myicon の通知アイコンを myicon に設定します。リクエストでこのキーを送信しない場合、アプリ マニフェストで指定したランチャー アイコンが表示されます。

color

string

通知のアイコンの色。#rrggbb 形式で指定します。

sound

string

デバイスが通知を受信したときに再生する通知音です。「default」、つまりアプリにバンドルされた音声リソースのファイル名を指定できます。音声ファイルは /res/raw/ に配置する必要があります。

tag

string

通知ドロワーの既存の通知を置き換えるために使用される識別子。指定されていない場合、リクエストごとに新しい通知が作成されます。指定した場合、同じタグを持つ通知がすでに表示されている場合は、通知ドロワーにある既存の通知が新しい通知に置き換わります。

click_action

string

ユーザーが通知をクリックしたときに実行されるアクション。この属性を指定すると、ユーザーが通知をクリックすると、一致するインテント フィルタを持つアクティビティが起動します。

body_loc_key

string

ユーザーの現在のローカライズに合わせて本文をローカライズするために使用する、アプリの文字列リソース内の本文文字列のキー。詳細については、文字列リソースをご覧ください。

body_loc_args[]

string

ユーザーの現在のローカライズに合わせて本文テキストをローカライズするために、body_loc_key の形式指定子の代わりに使用される可変文字列値。詳しくは、書式設定とスタイルをご覧ください。

title_loc_key

string

ユーザーの現在のローカライズに合わせてタイトル テキストをローカライズするために使用する、アプリの文字列リソース内のタイトル文字列のキー。詳細については、文字列リソースをご覧ください。

title_loc_args[]

string

ユーザーの現在のローカライズに合わせてタイトル テキストをローカライズするために使用する、title_loc_key の形式指定子の代わりに使用される可変文字列値。詳しくは、書式設定とスタイルをご覧ください。

channel_id

string

通知のチャンネル ID(Android O の新機能)。アプリは、このチャンネル ID を含む通知を受け取る前に、このチャンネル ID を持つチャンネルを作成する必要があります。リクエストでこのチャンネル ID を送信しない場合、または提供されたチャンネル ID がアプリによってまだ作成されていない場合、FCM はアプリ マニフェストで指定されたチャンネル ID を使用します。

ticker

string

ユーザー補助サービスに送信される「ティッカー」テキストを設定します。API レベル 21(Lollipop)より前では、通知が最初に到着したときにステータスバーに表示されるテキストを設定します。

sticky

boolean

false に設定するか未設定のままにした場合、ユーザーがパネルで通知をクリックすると、通知は自動的に閉じられます。true に設定すると、ユーザーがクリックしても通知は表示されます。

event_time

string (Timestamp format)

通知のイベントが発生した時刻を設定します。パネル内の通知は、この時間で並べ替えられています。ある時点は、protobuf.Timestamp を使用して表されます。

RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"

local_only

boolean

この通知が現在のデバイスにのみ関連しているかどうかを設定します。一部の通知は、他のデバイス(Wear OS スマートウォッチなど)にブリッジしてリモート表示させることができます。このヒントは、この通知がブリッジされないことを推奨するように設定できます。Wear OS ガイドをご覧ください。

notification_priority

enum (NotificationPriority)

この通知の相対的な優先度を設定します。優先度は、この通知がどの程度ユーザーの注意を引く必要があるかを示します。優先度の低い通知は、特定の状況でユーザーに表示されないことがありますが、優先度の高い通知のために中断される場合があります。同じ優先度を設定した場合の影響は、プラットフォームによって若干異なる場合があります。この優先度は AndroidMessagePriority とは異なることに注意してください。この優先度は、メッセージの配信後にクライアントによって処理されますが、AndroidMessagePriority は、メッセージが配信されるタイミングを制御する FCM の概念です。

default_sound

boolean

true に設定すると、通知に Android フレームワークのデフォルトの音が使用されます。デフォルト値は config.xml で指定されています。

default_vibrate_timings

boolean

true に設定すると、通知に Android フレームワークのデフォルトのバイブレーション パターンが使用されます。デフォルト値は config.xml で指定されています。default_vibrate_timings が true に設定され、vibrate_timings も設定されている場合は、ユーザーが指定した vibrate_timings の代わりにデフォルト値が使用されます。

default_light_settings

boolean

true に設定した場合、通知に Android フレームワークのデフォルトの LED ライト設定を使用します。デフォルト値は config.xml で指定されています。default_light_settings が true に設定され、light_settings も設定されている場合は、デフォルト値の代わりにユーザー指定の light_settings が使用されます。

vibrate_timings[]

string (Duration format)

使用するバイブレーション パターンを設定します。protobuf.Duration の配列を渡して、バイブレーターをオンまたはオフにします。最初の値は、バイブレーションをオンにする前に待機する Duration を示します。次の値は、バイブレーターをオンにする Duration を示します。それ以降の値は Duration の間で切り替わり、バイブレーターがオフになり、オンになります。vibrate_timings が設定され、default_vibrate_timingstrue に設定されている場合、ユーザーが指定した vibrate_timings の代わりにデフォルト値が使用されます。

s で終わる小数 9 桁までの秒単位の期間。例: "3.5s"

visibility

enum (Visibility)

通知の Notification.visibility を設定します。

notification_count

integer

この通知が表すアイテムの数を設定します。バッジをサポートするランチャーのバッジ数として表示されることがあります。通知バッジをご覧ください。たとえば、1 つの通知で複数の新規メッセージを表しているものの、ここでのカウントを新規メッセージの合計数を表す必要がある場合などに便利です。ゼロまたは未指定の場合、バッジをサポートするシステムはデフォルトを使用します。つまり、新しい通知が届くたびに長押しメニューに表示される数字を増やします。

light_settings

object (LightSettings)

通知の LED の点滅頻度と色(デバイスで LED が使用可能な場合)を制御する設定。合計点滅時間は OS によって制御されています。

image

string

通知に表示される画像の URL が含まれます。存在する場合は、google.firebase.fcm.v1.Notification.image がオーバーライドされます。

proxy

enum (Proxy)

通知をプロキシするタイミングを制御するための設定。

通知の優先度

通知の優先度。

列挙型
PRIORITY_UNSPECIFIED 優先度が指定されていない場合、通知の優先度は PRIORITY_DEFAULT に設定されます。
PRIORITY_MIN 通知の優先度が最も低くなります。この PRIORITY_MIN を含む通知は、詳細な通知ログなどの特別な状況を除き、ユーザーに表示されない場合があります。
PRIORITY_LOW 通知の優先度を下げます。UI は、PRIORITY_DEFAULT での通知と比べて、通知を小さくしたり、リスト内の位置を変えて表示したりできます。
PRIORITY_DEFAULT デフォルトの通知優先度。アプリケーションが自身の通知を優先しない場合は、すべての通知にこの値を使用します。
PRIORITY_HIGH 通知の優先度が高い。より重要な通知やアラートに使用します。UI では、これらの通知を、PRIORITY_DEFAULT での通知より大きくしたり、通知リスト内の異なる位置に表示したりできます。
PRIORITY_MAX 通知の優先度が最も高い。アプリケーションの最も重要なアイテムで、ユーザーの注意や入力が必要な場合に使用します。

公開設定

通知のさまざまな可視性レベル。

列挙型
VISIBILITY_UNSPECIFIED 指定しない場合のデフォルトは Visibility.PRIVATE です。
PRIVATE すべてのロック画面にこの通知を表示し、安全なロック画面には個人情報や機密情報は隠します。
PUBLIC すべてのロック画面に、この通知の全文を表示します。
SECRET この通知のどの部分も、安全なロック画面に表示しないでください。

照明の設定

通知 LED を制御するための設定。

JSON 表現
{
  "color": {
    object (Color)
  },
  "light_on_duration": string,
  "light_off_duration": string
}
フィールド
color

object (Color)

必須。LED の colorgoogle.type.Color で設定します。

light_on_duration

string (Duration format)

必須。light_off_duration とともに、LED が点滅する間隔を定義します。proto.Duration で定義されている解像度

s で終わる小数 9 桁までの秒単位の期間。例: "3.5s"

light_off_duration

string (Duration format)

必須。light_on_duration とともに、LED が点滅する間隔を定義します。proto.Duration で定義されている解像度

s で終わる小数 9 桁までの秒単位の期間。例: "3.5s"

RGBA カラースペースのカラーを表します。この表現は、コンパクトさよりも、さまざまな言語の色表現との間の変換を簡単にするように設計されています。たとえば、この表現のフィールドは、Java では java.awt.Color のコンストラクタに簡単に指定できます。また、iOS では UIColor の +colorWithRed:green:blue:alpha メソッドにも簡単に指定できます。また、少し作業するだけで、JavaScript で簡単に CSS rgba() 文字列にフォーマットできます。

このリファレンス ページには、RGB 値の解釈に使用する絶対色空間(sRGB、Adobe RGB、DCI-P3、BT.2020 など)に関する情報はありません。デフォルトでは、アプリケーションは sRGB 色空間を想定します。

色の等価性を判断する必要がある場合、実装では、特に記載のない限り、赤、緑、青、アルファの値の差が 1e-5 以下であれば、2 つの色を等しいものとして扱います。

例(Java):

 import com.google.type.Color;

 // ...
 public static java.awt.Color fromProto(Color protocolor) {
   float alpha = protocolor.hasAlpha()
       ? protocolor.getAlpha().getValue()
       : 1.0;

   return new java.awt.Color(
       protocolor.getRed(),
       protocolor.getGreen(),
       protocolor.getBlue(),
       alpha);
 }

 public static Color toProto(java.awt.Color color) {
   float red = (float) color.getRed();
   float green = (float) color.getGreen();
   float blue = (float) color.getBlue();
   float denominator = 255.0;
   Color.Builder resultBuilder =
       Color
           .newBuilder()
           .setRed(red / denominator)
           .setGreen(green / denominator)
           .setBlue(blue / denominator);
   int alpha = color.getAlpha();
   if (alpha != 255) {
     result.setAlpha(
         FloatValue
             .newBuilder()
             .setValue(((float) alpha) / denominator)
             .build());
   }
   return resultBuilder.build();
 }
 // ...

例(iOS / Obj-C):

 // ...
 static UIColor* fromProto(Color* protocolor) {
    float red = [protocolor red];
    float green = [protocolor green];
    float blue = [protocolor blue];
    FloatValue* alpha_wrapper = [protocolor alpha];
    float alpha = 1.0;
    if (alpha_wrapper != nil) {
      alpha = [alpha_wrapper value];
    }
    return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
 }

 static Color* toProto(UIColor* color) {
     CGFloat red, green, blue, alpha;
     if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
       return nil;
     }
     Color* result = [[Color alloc] init];
     [result setRed:red];
     [result setGreen:green];
     [result setBlue:blue];
     if (alpha <= 0.9999) {
       [result setAlpha:floatWrapperWithValue(alpha)];
     }
     [result autorelease];
     return result;
}
// ...

例(JavaScript):

// ...

var protoToCssColor = function(rgb_color) {
   var redFrac = rgb_color.red || 0.0;
   var greenFrac = rgb_color.green || 0.0;
   var blueFrac = rgb_color.blue || 0.0;
   var red = Math.floor(redFrac * 255);
   var green = Math.floor(greenFrac * 255);
   var blue = Math.floor(blueFrac * 255);

   if (!('alpha' in rgb_color)) {
      return rgbToCssColor(red, green, blue);
   }

   var alphaFrac = rgb_color.alpha.value || 0.0;
   var rgbParams = [red, green, blue].join(',');
   return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
};

var rgbToCssColor = function(red, green, blue) {
  var rgbNumber = new Number((red << 16) | (green << 8) | blue);
  var hexString = rgbNumber.toString(16);
  var missingZeros = 6 - hexString.length;
  var resultBuilder = ['#'];
  for (var i = 0; i < missingZeros; i++) {
     resultBuilder.push('0');
  }
  resultBuilder.push(hexString);
  return resultBuilder.join('');
};

// ...
JSON 表現
{
  "red": number,
  "green": number,
  "blue": number,
  "alpha": number
}
フィールド
red

number

カラーの赤の量。区間 [0, 1] の値として示されます。

green

number

カラーの緑の量。区間 [0, 1] の値として示されます。

blue

number

カラーの青色の量。区間 [0, 1] の値として示されます。

alpha

number

ピクセルに適用する必要があるこのカラーの割合。つまり、最終ピクセルカラーは以下の式によって定義されます。

pixel color = alpha * (this color) + (1.0 - alpha) * (background color)

つまり、値 1.0 はソリッドカラーに相当し、値 0.0 は透明色に相当します。これは、単純な浮動小数点スカラーではなくラッパー メッセージを使用します。これにより、デフォルト値が設定されたのか未設定値だったのかを区別できます。省略した場合、このカラー オブジェクトは単色としてレンダリングされます(アルファ値に明示的に値 1.0 が指定されているかのように)。

プロキシ

通知をプロキシするタイミングを制御するための設定。

列挙型
PROXY_UNSPECIFIED 指定しない場合のデフォルトは Proxy.IF_PRIORITY_LOWERED です。
ALLOW この通知をプロキシしてみてください。
DENY この通知をプロキシしないでください。
IF_PRIORITY_LOWERED デバイスの AndroidMessagePriorityHIGH から NORMAL に下げられた場合にのみ、この通知をプロキシしてみてください。

AndroidFcmOptions

Android 用 FCM SDK に用意されている機能のオプション。

JSON 表現
{
  "analytics_label": string
}
フィールド
analytics_label

string

メッセージの分析データに関連付けられたラベル。

WebpushConfig

Webpush プロトコル オプション。

JSON 表現
{
  "headers": {
    string: string,
    ...
  },
  "data": {
    string: string,
    ...
  },
  "notification": {
    object
  },
  "fcm_options": {
    object (WebpushFcmOptions)
  }
}
フィールド
headers

map (key: string, value: string)

webpush プロトコルで定義された HTTP ヘッダー。サポートされているヘッダーについては、Webpush プロトコルをご覧ください(例: "TTL": "15")。

"key": value ペアのリストを含むオブジェクト。例: { "name": "wrench", "mass": "1.3kg", "count": "3" }

data

map (key: string, value: string)

任意の Key-Value ペイロード。存在する場合は、google.firebase.fcm.v1.Message.data がオーバーライドされます。

"key": value ペアのリストを含むオブジェクト。例: { "name": "wrench", "mass": "1.3kg", "count": "3" }

notification

object (Struct format)

JSON オブジェクトとしてのウェブ通知オプション。Web Notification API で定義されている通知インスタンス プロパティをサポートします。この要素が存在する場合、「title」フィールドと「body」フィールドがある場合は、google.firebase.fcm.v1.Notification.titlegoogle.firebase.fcm.v1.Notification.body をオーバーライドします。

fcm_options

object (WebpushFcmOptions)

ウェブ用 FCM SDK によって提供される機能のオプション。

WebpushFcmOptions

ウェブ用 FCM SDK によって提供される機能のオプション。

JSON 表現
{
  "link": string,
  "analytics_label": string
}
フィールド
analytics_label

string

メッセージの分析データに関連付けられたラベル。

ApnsConfig

Apple Push Notification Service 固有のオプション。

JSON 表現
{
  "headers": {
    string: string,
    ...
  },
  "payload": {
    object
  },
  "fcm_options": {
    object (ApnsFcmOptions)
  }
}
フィールド
headers

map (key: string, value: string)

Apple プッシュ通知サービスで定義された HTTP リクエスト ヘッダー。apns-expirationapns-priority などのサポートされているヘッダーについては、APNs リクエスト ヘッダーをご覧ください。

明示的に設定しない場合、バックエンドの apns-expiration のデフォルト値は 30 日、apns-priority のデフォルト値は 10 です。

"key": value ペアのリストを含むオブジェクト。例: { "name": "wrench", "mass": "1.3kg", "count": "3" }

payload

object (Struct format)

JSON オブジェクトとしての APNs ペイロード(aps 辞書とカスタム ペイロードの両方を含む)。ペイロードキー リファレンスをご覧ください。存在する場合は、google.firebase.fcm.v1.Notification.titlegoogle.firebase.fcm.v1.Notification.body をオーバーライドします。

fcm_options

object (ApnsFcmOptions)

iOS 用の FCM SDK に用意されている機能のオプション。

ApnsFcmOptions

iOS 用の FCM SDK に用意されている機能のオプション。

JSON 表現
{
  "analytics_label": string,
  "image": string
}
フィールド
analytics_label

string

メッセージの分析データに関連付けられたラベル。

image

string

通知に表示される画像の URL が含まれます。存在する場合は、google.firebase.fcm.v1.Notification.image がオーバーライドされます。

FcmOptions

FCM SDK が提供する機能のための、プラットフォームに依存しないオプション。

JSON 表現
{
  "analytics_label": string
}
フィールド
analytics_label

string

メッセージの分析データに関連付けられたラベル。

メソッド

send

指定されたターゲット(登録トークン、トピック、条件)にメッセージを送信します。