资源:消息
要通过 Firebase Cloud Messaging 服务发送的消息。
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 只能是下列其中一项: |
|
token |
向其发送消息的注册令牌。 |
topic |
用于发送消息的主题名称,例如“weather”。注意:不可提供“/topics/”前缀。 |
condition |
发送消息时所依据的条件,例如“'foo' in topics && 'bar' in topics”。 |
通知
可在所有平台上使用的基本通知模板。
JSON 表示法 |
---|
{ "title": string, "body": string, "image": string } |
字段 | |
---|---|
title |
通知的标题。 |
body |
通知的正文。 |
image |
包含将下载到设备上并显示在通知中的图片的网址。各个平台全面支持 JPEG、PNG、BMP。GIF 动画和视频仅适用于 iOS。WebP 和 HEIF 在不同平台和平台版本中提供不同级别的支持。Android 的图片大小上限为 1MB。在 Firebase 存储上托管图片的配额用量以及影响/费用: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”(表示秒)结尾,后跟秒数,而纳秒以小数秒表示。例如,3 秒加 0 纳秒应以 JSON 格式编码为“3s”,而 3 秒和 1 纳秒应以 JSON 格式表示为“3.000000001s”。ttl 将向下舍入为最接近的秒数。 该时长以秒为单位,最多包含九个小数位,以“ |
restricted_package_name |
应用的软件包名称,其注册令牌必须匹配才能接收消息。 |
data |
任意键/值载荷。如果存在,它将替换 包含一系列 |
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 |
与用户点击通知相关的操作。如果指定,则当用户点击通知时,将会启动带有匹配 intent 过滤器的 activity。 |
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,即“祖鲁时”)格式,精确到纳秒,最多九个小数位。示例: |
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 |
设置此通知所代表的项数。对于支持标志的启动器,可显示为标志数量。请参阅通知标志。例如,如果您只使用一条通知来表示多条新消息,但您希望此处的计数代表新消息的总数,这样做可能会很有用。如果为零或未指定,支持标志的系统会使用默认值,即在每次收到新通知时递增长按菜单上显示的数字。 |
light_settings |
用于在设备上配备 LED 时控制通知的 LED 闪烁频率和颜色的设置。总闪烁时间由操作系统控制。 |
image |
包含将在通知中显示的图片的网址。如果存在,它将替换 |
proxy |
用于控制何时代理通知的设置。 |
通知优先级
通知的优先级。
枚举 | |
---|---|
PRIORITY_UNSPECIFIED |
如果未指定优先级,则通知优先级将设置为 PRIORITY_DEFAULT 。 |
PRIORITY_MIN |
最低通知优先级。除非在特殊情况(例如详细的通知日志)下,否则系统可能不会向用户显示包含此 PRIORITY_MIN 的通知。 |
PRIORITY_LOW |
通知优先级较低。与使用 PRIORITY_DEFAULT 的通知相比,界面可以选择以较小尺寸或在列表中的位置显示通知。 |
PRIORITY_DEFAULT |
默认通知优先级。如果应用不对自己的通知设定优先级,则对所有通知使用此值。 |
PRIORITY_HIGH |
通知优先级较高。使用此模式显示更重要的通知或提醒。与使用 PRIORITY_DEFAULT 的通知相比,界面可以选择以更大的字体或在通知列表中的其他位置显示这些通知。 |
PRIORITY_MAX |
最高通知优先级。将此用于需要用户提示或输入的最重要的应用项。 |
视觉障碍
通知的不同可见性级别。
枚举 | |
---|---|
VISIBILITY_UNSPECIFIED |
如果未指定,则默认为 Visibility.PRIVATE 。 |
PRIVATE |
在所有锁定屏幕上显示此通知,但在安全锁定屏幕上隐藏敏感信息或隐私信息。 |
PUBLIC |
在所有锁定的屏幕上完整显示此通知。 |
SECRET |
请勿在安全锁定屏幕上显示此通知的任何部分。 |
灯光设置
用于控制通知 LED 的设置。
JSON 表示法 |
---|
{
"color": {
object ( |
字段 | |
---|---|
color |
必需。使用 google.type.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 颜色空间。
在需要确定颜色相等性时,除非另有说明,否则如果两种颜色的红色、绿色、蓝色和 alpha 值相差不超过 1e-5
,则实现应将这两种颜色视为相等。
示例 (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 表示完全透明的颜色。它会使用封装容器消息,而非简单的浮动标量,以便区分默认值和未设置的值。如果省略,此颜色对象将呈现为纯色(就好像 alpha 值已被明确指定为 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 标头。如需了解支持的标头(例如 "TTL": "15"),请参阅 Webpush 协议。 包含一系列 |
data |
任意键/值载荷。如果存在,它将替换 包含一系列 |
notification |
网络通知选项作为 JSON 对象。支持 Web Notification API 中定义的通知实例属性。如果存在,“title”和“body”字段将替换 |
fcm_options |
适用于 Web 的 FCM SDK 提供的功能的选项。 |
WebpushFcmOptions
适用于 Web 的 FCM SDK 提供的功能的选项。
JSON 表示法 |
---|
{ "link": string, "analytics_label": string } |
字段 | |
---|---|
link |
用户点击通知时要打开的链接。所有网址值都必须采用 HTTPS。 |
analytics_label |
与消息的分析数据关联的标签。 |
ApnsConfig
特定于 Apple 推送通知服务的选项。
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 |
包含将在通知中显示的图片的网址。如果存在,它将替换 |
FcmOptions
FCM SDK 提供的功能提供的选项独立于平台。
JSON 表示法 |
---|
{ "analytics_label": string } |
字段 | |
---|---|
analytics_label |
与消息的分析数据关联的标签。 |
方法 |
|
---|---|
|
向指定目标(注册令牌、主题或条件)发送消息。 |