リソース: Message
Firebase Cloud Messaging サービスによって送信されるメッセージ。
JSON 表現 |
---|
{ "name": string, "data": { string: string, ... }, "notification": { object ( |
フィールド | |
---|---|
name |
出力専用。送信されたメッセージの識別子( |
data |
入力のみの任意の Key-Value ペイロード。UTF-8 でエンコードする必要があります。キーを予約語(「from」や「message_type」のほか、「google.」や「gcm.notification.」で始まる単語)にすることはできません。データ フィールドのみを含むペイロードを iOS デバイスに送信する場合、
|
notification |
入力のみのすべてのプラットフォームで使用する基本的な通知テンプレート。 |
android |
入力のみのFCM 接続サーバー経由で送信されるメッセージ向けの Android 固有のオプション。 |
webpush |
入力のみのWebpush プロトコル オプション。 |
apns |
入力のみのApple Push Notification Service 固有のオプション。 |
fcm_options |
入力のみのすべてのプラットフォームで使用する FCM SDK 機能オプションのテンプレート。 |
共用体フィールド target 。必須。入力のみのメッセージの送信先のターゲット。target は次のいずれかになります。 |
|
token |
メッセージの送信先の登録トークン。 |
topic |
メッセージの送信先のトピック名(例:"weather".注: 「/topics/」接頭辞を指定しないでください。 |
condition |
メッセージの送信先の条件。例:"'foo'トピック &&「bar」表示されます。 |
通知
すべてのプラットフォームで使用する基本的な通知テンプレート。
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 |
メッセージの優先度。「標準」を取ることができます「高」使用できます。詳細については、メッセージの優先度の設定をご覧ください。 |
ttl |
デバイスがオフラインの場合に、メッセージを FCM ストレージに保持する期間(秒単位)。サポートされる最大有効期間は 4 週間です。設定しない場合のデフォルト値は 4 週間です。メッセージをすぐに送信する場合は 0 に設定します。JSON 形式では、Duration 型はオブジェクトではなく文字列としてエンコードされます。ここで、文字列は接尾辞「s」で終わります。(秒を示す)で、先頭に秒数が付きます。ナノ秒は小数点以下の秒数で表します。たとえば、0 ナノ秒の 3 秒は「3s」として JSON 形式でエンコードし、3 秒と 1 ナノ秒は「3.000000001s」と JSON 形式で表現する必要があります。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 サービスは可能な場合にスリープ状態のデバイスを起動して、アプリサーバーへのネットワーク接続を開くことができます。インスタント メッセージ、チャット、音声通話のアラートなどを備えたアプリでは、通常、ネットワーク接続を開いて、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 に設定します。リクエストでこのキーを送信しない場合、FCM はアプリ マニフェストで指定したランチャー アイコンを表示します。 |
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 の配列を渡します。1 つ目の値は、バイブレータをオンにする前に待機する
|
visibility |
通知の Notification.visibility を設定します。 |
notification_count |
この通知が表すアイテム数を設定します。バッジに対応しているランチャーではバッジ数として表示されることがあります。通知バッジをご覧ください。たとえば、複数の新着メッセージを表示するために 1 つの通知のみを使用しているものの、ここでのカウントで新着メッセージの合計数を表す場合、これは便利です。値が 0 または指定されていない場合、バッジをサポートするシステムではデフォルトの値が使用されます。つまり、新しい通知が届くたびに、長押しメニューに表示される数字が増加します。 |
light_settings |
LED が使用可能なデバイスであれば、通知の LED の点滅速度と色を制御する設定です。点滅の合計時間は OS によって制御されます。 |
image |
通知に表示される画像の URL が含まれます。指定した場合は |
bypass_proxy_notification |
設定すると、デバイスに配信される表示通知は、プロキシではなくアプリで処理されます。 |
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 |
メッセージのアナリティクス データに関連付けられたラベル。 |
メソッド |
|
---|---|
|
指定されたターゲット(登録トークン、トピック、または条件)にメッセージを送信します。 |