リソース: Message
Firebase Cloud Messaging Service によって送信されるメッセージ。
JSON 表現 |
---|
{ "name": string, "data": { string: string, ... }, "notification": { object ( |
フィールド | |
---|---|
name |
出力のみ。送信されたメッセージの識別子( |
data |
入力のみの任意の Key-Value ペイロード。UTF-8 でエンコードする必要があります。予約語(「from」、「message_type」、または「google」や「gcm」で始まる単語)は使用できません。データ フィールドのみを含むペイロードを iOS デバイスに送信する場合、
|
notification |
入力のみのすべてのプラットフォームで使用できる基本的な通知テンプレート。 |
android |
入力のみのFCM 接続サーバーを介して送信されるメッセージに関する Android 固有のオプション。 |
webpush |
入力のみのWebpush プロトコル オプション。 |
apns |
入力のみのApple Push Notification Service 固有のオプション。 |
fcm_options |
入力のみのすべてのプラットフォームで使用する FCM SDK 機能オプションのテンプレート。 |
共用体フィールド target 。必須。入力のみのメッセージの送信先ターゲット。target は次のいずれかになります。 |
|
token |
メッセージの送信先となる登録トークン。 |
topic |
メッセージの送信先となるトピック名(例: 「weather」)。注: 接頭辞「/topics/」は指定しないでください。 |
condition |
メッセージを送信する条件(例: 「'foo' in tasks && 'bar' in tasks」など)。 |
通知
すべてのプラットフォームで使用できる基本的な通知テンプレート。
JSON 表現 |
---|
{ "title": string, "body": string, "image": string } |
フィールド | |
---|---|
title |
通知のタイトル。 |
body |
通知の本文。 |
image |
デバイスにダウンロードされて通知に表示される画像の 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 ( |
フィールド | |
---|---|
collapse_key |
閉じることができるメッセージのグループの識別子。配信を再開できるときに最後のメッセージだけが送信されます。一度に最大 4 つの異なる折りたたみキーを使用できます。 |
priority |
メッセージの優先度。「normal」と「high」の値を指定できます。詳細については、メッセージの優先度の設定をご覧ください。 |
ttl |
デバイスがオフラインの場合にメッセージを FCM のストレージに保持する期間(秒)。サポートされる最大有効期間は 4 週間です。設定しない場合、デフォルト値は 4 週間です。メッセージをすぐに送信する場合は 0 に設定します。JSON 形式では、Duration 型はオブジェクトではなく文字列としてエンコードされます。この場合、文字列の最後には秒を示す s が付加され、その前に秒数が続き、小数点以下の秒数を表すナノ秒が付きます。たとえば、0 ナノ秒の 3 秒は JSON 形式で「3s」としてエンコードする必要がありますが、3 秒と 1 ナノ秒は JSON 形式で「3.000000001s」と表現する必要があります。ttl は秒単位に切り捨てられます。
|
restricted_package_name |
アプリケーションのパッケージ名。メッセージを受信するために登録トークンが一致する必要があります。 |
data |
任意の Key-Value ペイロード。存在する場合は、
|
notification |
Android デバイスに送信する通知。 |
fcm_options |
Android 用 FCM SDK に用意されている機能のオプション。 |
direct_boot_ok |
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 ( |
フィールド | |
---|---|
title |
通知のタイトル。存在する場合は、 |
body |
通知の本文。存在する場合は、 |
icon |
通知のアイコン。ドローアブル リソース myicon の通知アイコンを myicon に設定します。リクエストでこのキーを送信しない場合、アプリ マニフェストで指定したランチャー アイコンが表示されます。 |
color |
通知のアイコンの色。#rrggbb 形式で指定します。 |
sound |
デバイスが通知を受信したときに再生する通知音です。「default」、つまりアプリにバンドルされた音声リソースのファイル名を指定できます。音声ファイルは /res/raw/ に配置する必要があります。 |
tag |
通知ドロワーの既存の通知を置き換えるために使用される識別子。指定されていない場合、リクエストごとに新しい通知が作成されます。指定した場合、同じタグを持つ通知がすでに表示されている場合は、通知ドロワーにある既存の通知が新しい通知に置き換わります。 |
click_action |
ユーザーが通知をクリックしたときに実行されるアクション。この属性を指定すると、ユーザーが通知をクリックすると、一致するインテント フィルタを持つアクティビティが起動します。 |
body_loc_key |
ユーザーの現在のローカライズに合わせて本文をローカライズするために使用する、アプリの文字列リソース内の本文文字列のキー。詳細については、文字列リソースをご覧ください。 |
body_loc_args[] |
ユーザーの現在のローカライズに合わせて本文テキストをローカライズするために、body_loc_key の形式指定子の代わりに使用される可変文字列値。詳しくは、書式設定とスタイルをご覧ください。 |
title_loc_key |
ユーザーの現在のローカライズに合わせてタイトル テキストをローカライズするために使用する、アプリの文字列リソース内のタイトル文字列のキー。詳細については、文字列リソースをご覧ください。 |
title_loc_args[] |
ユーザーの現在のローカライズに合わせてタイトル テキストをローカライズするために使用する、title_loc_key の形式指定子の代わりに使用される可変文字列値。詳しくは、書式設定とスタイルをご覧ください。 |
channel_id |
通知のチャンネル ID(Android O の新機能)。アプリは、このチャンネル ID を含む通知を受け取る前に、このチャンネル ID を持つチャンネルを作成する必要があります。リクエストでこのチャンネル ID を送信しない場合、または提供されたチャンネル ID がアプリによってまだ作成されていない場合、FCM はアプリ マニフェストで指定されたチャンネル ID を使用します。 |
ticker |
ユーザー補助サービスに送信される「ティッカー」テキストを設定します。API レベル 21( |
sticky |
false に設定するか未設定のままにした場合、ユーザーがパネルで通知をクリックすると、通知は自動的に閉じられます。true に設定すると、ユーザーがクリックしても通知は表示されます。 |
event_time |
通知のイベントが発生した時刻を設定します。パネル内の通知は、この時間で並べ替えられています。ある時点は、protobuf.Timestamp を使用して表されます。 RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例: |
local_only |
この通知が現在のデバイスにのみ関連しているかどうかを設定します。一部の通知は、他のデバイス(Wear OS スマートウォッチなど)にブリッジしてリモート表示させることができます。このヒントは、この通知がブリッジされないことを推奨するように設定できます。Wear OS ガイドをご覧ください。 |
notification_priority |
この通知の相対的な優先度を設定します。優先度は、この通知がどの程度ユーザーの注意を引く必要があるかを示します。優先度の低い通知は、特定の状況でユーザーに表示されないことがありますが、優先度の高い通知のために中断される場合があります。同じ優先度を設定した場合の影響は、プラットフォームによって若干異なる場合があります。この優先度は |
default_sound |
true に設定すると、通知に Android フレームワークのデフォルトの音が使用されます。デフォルト値は config.xml で指定されています。 |
default_vibrate_timings |
true に設定すると、通知に Android フレームワークのデフォルトのバイブレーション パターンが使用されます。デフォルト値は config.xml で指定されています。 |
default_light_settings |
true に設定した場合、通知に Android フレームワークのデフォルトの LED ライト設定を使用します。デフォルト値は config.xml で指定されています。 |
vibrate_timings[] |
使用するバイブレーション パターンを設定します。protobuf.Duration の配列を渡して、バイブレーターをオンまたはオフにします。最初の値は、バイブレーションをオンにする前に待機する
|
visibility |
通知の Notification.visibility を設定します。 |
notification_count |
この通知が表すアイテムの数を設定します。バッジをサポートするランチャーのバッジ数として表示されることがあります。通知バッジをご覧ください。たとえば、1 つの通知で複数の新規メッセージを表しているものの、ここでのカウントを新規メッセージの合計数を表す必要がある場合などに便利です。ゼロまたは未指定の場合、バッジをサポートするシステムはデフォルトを使用します。つまり、新しい通知が届くたびに長押しメニューに表示される数字を増やします。 |
light_settings |
通知の LED の点滅頻度と色(デバイスで LED が使用可能な場合)を制御する設定。合計点滅時間は OS によって制御されています。 |
image |
通知に表示される画像の URL が含まれます。存在する場合は、 |
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 |
必須。LED の |
light_on_duration |
必須。
|
light_off_duration |
必須。
|
色
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 |
カラーの赤の量。区間 [0, 1] の値として示されます。 |
green |
カラーの緑の量。区間 [0, 1] の値として示されます。 |
blue |
カラーの青色の量。区間 [0, 1] の値として示されます。 |
alpha |
ピクセルに適用する必要があるこのカラーの割合。つまり、最終ピクセルカラーは以下の式によって定義されます。
つまり、値 1.0 はソリッドカラーに相当し、値 0.0 は透明色に相当します。これは、単純な浮動小数点スカラーではなくラッパー メッセージを使用します。これにより、デフォルト値が設定されたのか未設定値だったのかを区別できます。省略した場合、このカラー オブジェクトは単色としてレンダリングされます(アルファ値に明示的に値 1.0 が指定されているかのように)。 |
プロキシ
通知をプロキシするタイミングを制御するための設定。
列挙型 | |
---|---|
PROXY_UNSPECIFIED |
指定しない場合のデフォルトは Proxy.IF_PRIORITY_LOWERED です。 |
ALLOW |
この通知をプロキシしてみてください。 |
DENY |
この通知をプロキシしないでください。 |
IF_PRIORITY_LOWERED |
デバイスの AndroidMessagePriority が HIGH から NORMAL に下げられた場合にのみ、この通知をプロキシしてみてください。 |
AndroidFcmOptions
Android 用 FCM SDK に用意されている機能のオプション。
JSON 表現 |
---|
{ "analytics_label": string } |
フィールド | |
---|---|
analytics_label |
メッセージの分析データに関連付けられたラベル。 |
WebpushConfig
Webpush プロトコル オプション。
JSON 表現 |
---|
{
"headers": {
string: string,
...
},
"data": {
string: string,
...
},
"notification": {
object
},
"fcm_options": {
object ( |
フィールド | |
---|---|
headers |
webpush プロトコルで定義された HTTP ヘッダー。サポートされているヘッダーについては、Webpush プロトコルをご覧ください(例: "TTL": "15")。
|
data |
任意の Key-Value ペイロード。存在する場合は、
|
notification |
JSON オブジェクトとしてのウェブ通知オプション。Web Notification API で定義されている通知インスタンス プロパティをサポートします。この要素が存在する場合、「title」フィールドと「body」フィールドがある場合は、 |
fcm_options |
ウェブ用 FCM SDK によって提供される機能のオプション。 |
WebpushFcmOptions
ウェブ用 FCM SDK によって提供される機能のオプション。
JSON 表現 |
---|
{ "link": string, "analytics_label": string } |
フィールド | |
---|---|
link |
ユーザーが通知をクリックしたときに開くリンク。すべての URL 値で HTTPS が必須です。 |
analytics_label |
メッセージの分析データに関連付けられたラベル。 |
ApnsConfig
Apple Push Notification Service 固有のオプション。
JSON 表現 |
---|
{
"headers": {
string: string,
...
},
"payload": {
object
},
"fcm_options": {
object ( |
フィールド | |
---|---|
headers |
Apple プッシュ通知サービスで定義された HTTP リクエスト ヘッダー。 明示的に設定しない場合、バックエンドの
|
payload |
JSON オブジェクトとしての APNs ペイロード( |
fcm_options |
iOS 用の FCM SDK に用意されている機能のオプション。 |
ApnsFcmOptions
iOS 用の FCM SDK に用意されている機能のオプション。
JSON 表現 |
---|
{ "analytics_label": string, "image": string } |
フィールド | |
---|---|
analytics_label |
メッセージの分析データに関連付けられたラベル。 |
image |
通知に表示される画像の URL が含まれます。存在する場合は、 |
FcmOptions
FCM SDK が提供する機能のための、プラットフォームに依存しないオプション。
JSON 表現 |
---|
{ "analytics_label": string } |
フィールド | |
---|---|
analytics_label |
メッセージの分析データに関連付けられたラベル。 |
メソッド |
|
---|---|
|
指定されたターゲット(登録トークン、トピック、条件)にメッセージを送信します。 |