リソース: メッセージ
Firebase Cloud Messaging Service によって送信されるメッセージ。
JSON表現 |
---|
{ "name": string, "data": { string: string, ... }, "notification": { object ( |
田畑 | |
---|---|
name | 出力のみ。送信されたメッセージの識別子 |
data | 入力のみ。任意のキー/値ペイロード。UTF-8 でエンコードする必要があります。キーは予約語 (「from」、「message_type」、または「google」または「gcm」で始まる単語) であってはなりません。データ フィールドのみを含むペイロードを iOS デバイスに送信する場合、 |
notification | 入力のみ。すべてのプラットフォームで使用できる基本的な通知テンプレート。 |
android | 入力のみ。 FCM 接続サーバー経由で送信されるメッセージの Android 固有のオプション。 |
webpush | 入力のみ。 Webpush プロトコルのオプション。 |
apns | 入力のみ。 Apple プッシュ通知サービス固有のオプション。 |
fcm_options | 入力のみ。すべてのプラットフォームで使用する FCM SDK 機能オプションのテンプレート。 |
ユニオンフィールドtarget 。必須。入力のみ。メッセージを送信するターゲット。 target 次のいずれか 1 つだけです。 | |
token | メッセージの送信先の登録トークン。 |
topic | メッセージの送信先のトピック名 (例: 「天気」)。注: 「/topics/」プレフィックスを指定しないでください。 |
condition | メッセージの送信先の条件。たとえば、「トピック内の 'foo' && トピック内の 'bar'」。 |
通知
すべてのプラットフォームで使用できる基本的な通知テンプレート。
JSON表現 |
---|
{ "title": string, "body": string, "image": string } |
田畑 | |
---|---|
title | 通知のタイトル。 |
body | 通知の本文。 |
image | デバイスにダウンロードされて通知に表示される画像の URL が含まれます。 JPEG、PNG、BMP はプラットフォーム間で完全にサポートされています。アニメーション GIF とビデオは iOS でのみ動作します。 WebP と HEIF は、プラットフォームおよびプラットフォームのバージョンごとにさまざまなレベルのサポートを提供します。 Android には 1MB の画像サイズ制限があります。 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 ナノ秒は JSON 形式で「3.000000001s」として表現する必要があります。 ttl は秒単位で切り捨てられます。 「 |
restricted_package_name | メッセージを受信するために登録トークンが一致する必要があるアプリケーションのパッケージ名。 |
data | 任意のキー/値ペイロード。存在する場合、 |
notification | Android デバイスに送信する通知。 |
fcm_options | FCM SDK for Android によって提供される機能のオプション。 |
direct_boot_ok | true に設定すると、デバイスがダイレクト ブート モードにあるときに、メッセージをアプリに配信することが許可されます。 「ダイレクト ブート モードのサポート」を参照してください。 |
Androidメッセージ優先度
Android デバイスに送信するメッセージの優先順位。この優先順位は、メッセージがいつ配信されるかを制御する FCM の概念であることに注意してください。 FCM ガイドを参照してください。さらに、 AndroidNotification.NotificationPriorityを使用して、対象の Android デバイスでの通知表示の優先順位を決定できます。
列挙型 | |
---|---|
NORMAL | データメッセージのデフォルトの優先度。通常の優先度のメッセージは、スリープ状態のデバイスではネットワーク接続を開かず、バッテリーを節約するために配信が遅れる可能性があります。新しい電子メールや同期するその他のデータの通知など、時間に依存しないメッセージの場合は、通常の配信優先順位を選択します。 |
HIGH | 通知メッセージのデフォルトの優先度。 FCM は優先度の高いメッセージをすぐに配信しようとし、FCM サービスが可能な場合にスリープ状態のデバイスを起動し、アプリ サーバーへのネットワーク接続を開くことができるようにします。たとえば、インスタント メッセージング、チャット、または音声通話アラートを備えたアプリでは、通常、ネットワーク接続を開き、FCM がメッセージを遅延なくデバイスに配信することを確認する必要があります。メッセージがタイムクリティカルであり、ユーザーの即時操作が必要な場合は、優先度を高く設定します。ただし、メッセージの優先度を高に設定すると、通常の優先度のメッセージに比べてバッテリーの消耗が大きくなることに注意してください。 |
Android通知
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 | デバイスが通知を受信したときに再生される音。 「デフォルト」またはアプリにバンドルされているサウンドリソースのファイル名をサポートします。サウンド ファイルは /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 | 通知のNotice.visibilityを設定します。 |
notification_count | この通知が表すアイテムの数を設定します。バッジをサポートするランチャーのバッジ数として表示される場合があります。 「 通知バッジ 」を参照してください。たとえば、これは、複数の新しいメッセージを表すために 1 つの通知だけを使用しているが、ここでのカウントで新しいメッセージの合計数を表す必要がある場合に便利です。ゼロまたは指定されていない場合、バッジをサポートするシステムはデフォルトを使用します。これは、新しい通知が到着するたびに長押しメニューに表示される数値を増加させます。 |
light_settings | デバイスで LED が利用可能な場合、通知の LED の点滅速度と色を制御する設定。合計の点滅時間は OS によって制御されます。 |
image | 通知に表示される画像の URL が含まれます。存在する場合、 |
通知の優先度
通知の優先度レベル。
列挙型 | |
---|---|
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 が与えられているかのように)。 |
AndroidFcmオプション
FCM SDK for Android によって提供される機能のオプション。
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 | 任意のキー/値ペイロード。存在する場合、 |
notification | JSON オブジェクトとしての Web 通知オプション。 Web 通知 APIで定義されている通知インスタンス プロパティをサポートします。存在する場合、「title」フィールドと「body」フィールドは |
fcm_options | FCM SDK for Web によって提供される機能のオプション。 |
WebpushFcmオプション
FCM SDK for Web によって提供される機能のオプション。
JSON表現 |
---|
{ "link": string, "analytics_label": string } |
田畑 | |
---|---|
link | ユーザーが通知をクリックしたときに開くリンク。すべての URL 値で HTTPS が必要です。 |
analytics_label | メッセージの分析データに関連付けられたラベル。 |
ApnsConfig
Apple プッシュ通知サービス固有のオプション。
JSON表現 |
---|
{
"headers": {
string: string,
...
},
"payload": {
object
},
"fcm_options": {
object ( |
田畑 | |
---|---|
headers | Apple Push Notification Service で定義された HTTP リクエスト ヘッダー。 バックエンドは、明示的に設定されていない場合、 |
payload | APN ペイロードは、 |
fcm_options | iOS 用 FCM SDK によって提供される機能のオプション。 |
ApnsFcmオプション
iOS 用 FCM SDK によって提供される機能のオプション。
JSON表現 |
---|
{ "analytics_label": string, "image": string } |
田畑 | |
---|---|
analytics_label | メッセージの分析データに関連付けられたラベル。 |
image | 通知に表示される画像の URL が含まれます。存在する場合、 |
Fcmオプション
FCM SDK によって提供される機能のプラットフォームに依存しないオプション。
JSON表現 |
---|
{ "analytics_label": string } |
田畑 | |
---|---|
analytics_label | メッセージの分析データに関連付けられたラベル。 |
メソッド | |
---|---|
| 指定されたターゲット (登録トークン、トピック、または条件) にメッセージを送信します。 |