Ресурс: Сообщение
Сообщение для отправки службой облачных сообщений Firebase.
JSON-представление |
---|
{ "name": string, "data": { string: string, ... }, "notification": { object ( |
Поля | |
---|---|
name | Только вывод. Идентификатор отправленного сообщения в формате |
data | Только ввод. Произвольные полезные данные «ключ/значение», которые должны быть в кодировке UTF-8. Ключ не должен быть зарезервированным словом («from», «message_type» или любым словом, начинающимся с «google.» или «gcm.notification»). При отправке полезных данных, содержащих только поля данных, на устройства iOS в Объект, содержащий список пар |
notification | Только ввод. Базовый шаблон уведомления для использования на всех платформах. |
android | Только ввод. Специальные параметры Android для сообщений, отправляемых через сервер соединений FCM . |
webpush | Только ввод. Параметры протокола Webpush . |
apns | Только ввод. Специальные параметры службы push-уведомлений Apple . |
fcm_options | Только ввод. Шаблон для опций функций FCM SDK для использования на всех платформах. |
target Союза. Необходимый. Только ввод. Цель для отправки сообщения. target может быть только одно из следующих: | |
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 имеет ограничение на размер изображения в 1 МБ. Использование квоты и последствия/затраты на размещение изображений в Firebase Storage: https://firebase.google.com/pricing . |
AndroidConfig
Специальные параметры Android для сообщений, отправляемых через сервер соединений FCM .
JSON-представление |
---|
{ "collapse_key": string, "priority": enum ( |
Поля | |
---|---|
collapse_key | Идентификатор группы сообщений, которые можно свернуть, чтобы при возобновлении доставки отправлялось только последнее сообщение. В любой момент времени допускается максимум 4 различных ключа свертывания. |
priority | Приоритет сообщения. Может принимать «нормальные» и «высокие» значения. Дополнительную информацию см. в разделе Установка приоритета сообщения . |
ttl | Как долго (в секундах) сообщение должно храниться в хранилище FCM, если устройство находится в автономном режиме. Максимальное время поддержки составляет 4 недели, а значение по умолчанию — 4 недели, если оно не установлено. Установите значение 0, если хотите отправить сообщение немедленно. В формате JSON тип Duration кодируется как строка, а не как объект, где строка заканчивается суффиксом «s» (указывающим секунды) и ей предшествует количество секунд, причем наносекунды выражаются как дробные секунды. Например, 3 секунды с 0 наносекундами должны быть закодированы в формате JSON как «3 с», а 3 секунды и 1 наносекунда должны быть выражены в формате JSON как «3.000000001 с». Время жизни будет округлено до ближайшей секунды. Длительность в секундах, содержащая до девяти дробных цифр и оканчивающаяся на « |
restricted_package_name | Имя пакета приложения, которому должен соответствовать регистрационный токен, чтобы получить сообщение. |
data | Полезная нагрузка произвольного ключа/значения. Если он присутствует, он переопределит Объект, содержащий список пар |
notification | Уведомление для отправки на устройства Android. |
fcm_options | Варианты функций, предоставляемых FCM SDK для Android. |
direct_boot_ok | Если установлено значение true, сообщениям будет разрешено доставляться в приложение, пока устройство находится в режиме прямой загрузки. См. раздел Поддержка режима прямой загрузки . |
AndroidMessagePriority
Приоритет сообщения для отправки на устройства Android. Обратите внимание, что этот приоритет — это концепция FCM, которая контролирует время доставки сообщения. См. руководства FCM . Кроме того, вы можете определить приоритет отображения уведомлений на целевых устройствах Android с помощью AndroidNotification.NotificationPriority .
Перечисления | |
---|---|
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 | Идентификатор канала уведомления (новое в Android O). Приложение должно создать канал с этим идентификатором канала, прежде чем будет получено какое-либо уведомление с этим идентификатором канала. Если вы не отправляете этот идентификатор канала в запросе или если предоставленный идентификатор канала еще не создан приложением, FCM использует идентификатор канала, указанный в манифесте приложения. |
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 по умолчанию. Значения по умолчанию указаны в config.xml . Если |
vibrate_timings[] | Установите используемый шаблон вибрации. Передайте массив protobuf.Duration , чтобы включить или выключить вибратор. Первое значение указывает Длительность в секундах, содержащая до девяти дробных цифр и оканчивающаяся на « |
visibility | Установите Notification.visibility уведомления. |
notification_count | Устанавливает количество элементов, которые представляет это уведомление. Может отображаться как количество значков для программ запуска, поддерживающих значки. См. Значок уведомления . Например, это может быть полезно, если вы используете только одно уведомление для представления нескольких новых сообщений, но хотите, чтобы здесь отображалось общее количество новых сообщений. Если значение равно нулю или не указано, системы, поддерживающие бейджи, используют значение по умолчанию, которое увеличивает число, отображаемое в меню длительного нажатия, каждый раз при поступлении нового уведомления. |
light_settings | Настройки для управления частотой и цветом мигания светодиода уведомления, если светодиод доступен на устройстве. Общее время мигания контролируется ОС. |
image | Содержит URL-адрес изображения, которое будет отображаться в уведомлении. Если он присутствует, он переопределит |
bypass_proxy_notification | Если этот параметр установлен, уведомления на дисплее, доставленные на устройство, будут обрабатываться приложением, а не прокси-сервером. |
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 | Не раскрывайте никакую часть этого уведомления на защищенном экране блокировки. |
Настройки освещения
Настройки для управления светодиодом уведомлений.
JSON-представление |
---|
{
"color": {
object ( |
Поля | |
---|---|
color | Необходимый. Установите |
light_on_duration | Необходимый. Наряду с Длительность в секундах, содержащая до девяти дробных цифр и оканчивающаяся на « |
light_off_duration | Необходимый. Наряду с Длительность в секундах, содержащая до девяти дробных цифр и оканчивающаяся на « |
Цвет
Представляет цвет в цветовом пространстве RGBA. Это представление предназначено для простоты преобразования в цветовые представления на разных языках и обратно, а не для компактности. Например, поля этого представления можно тривиально передать конструктору java.awt.Color
в Java; его также можно тривиально передать методу +colorWithRed:green:blue:alpha
UIColor в iOS; и, приложив немного усилий, его можно легко отформатировать в строку CSS rgba()
в JavaScript.
На этой справочной странице нет информации об абсолютном цветовом пространстве, которое следует использовать для интерпретации значения RGB, например sRGB, Adobe RGB, DCI-P3 и BT.2020. По умолчанию приложения должны использовать цветовое пространство sRGB.
Когда необходимо определить равенство цветов, реализации, если не указано иное, рассматривают два цвета как равные, если все их значения красного, зеленого, синего и альфа отличаются не более чем на 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 соответствует полностью прозрачному цвету. При этом используется сообщение-оболочка, а не простой скаляр с плавающей запятой, чтобы можно было отличить значение по умолчанию от значения, которое не установлено. Если этот параметр опущен, этот цветовой объект отображается как сплошной цвет (как если бы значению альфа было явно присвоено значение 1,0). |
Прокси
Настройка для управления тем, когда уведомление может быть проксировано.
Перечисления | |
---|---|
PROXY_UNSPECIFIED | Если не указано, по умолчанию используется Proxy.IF_PRIORITY_LOWERED . |
ALLOW | Попробуйте проксировать это уведомление. |
DENY | Не проксируйте это уведомление. |
IF_PRIORITY_LOWERED | Попытайтесь проксировать это уведомление только в том случае, если его AndroidMessagePriority на устройстве был понижен с HIGH до NORMAL . |
AndroidFcmOptions
Варианты функций, предоставляемых FCM SDK для Android.
JSON-представление |
---|
{ "analytics_label": string } |
Поля | |
---|---|
analytics_label | Метка, связанная с аналитическими данными сообщения. |
WebpushConfig
Параметры протокола Webpush .
JSON-представление |
---|
{
"headers": {
string: string,
...
},
"data": {
string: string,
...
},
"notification": {
object
},
"fcm_options": {
object ( |
Поля | |
---|---|
headers | Заголовки HTTP, определенные в протоколе webpush. Обратитесь к протоколу Webpush для получения информации о поддерживаемых заголовках, например «TTL»: «15». Объект, содержащий список пар |
data | Полезная нагрузка произвольного ключа/значения. Если он присутствует, он переопределит Объект, содержащий список пар |
notification | Параметры веб-уведомлений в виде объекта JSON. Поддерживает свойства экземпляра уведомления, определенные в API веб-уведомлений . Если они присутствуют, поля «title» и «body» переопределяют |
fcm_options | Параметры функций, предоставляемых FCM SDK для Интернета. |
WebpushFcmOptions
Параметры функций, предоставляемых FCM SDK для Интернета.
JSON-представление |
---|
{ "link": string, "analytics_label": string } |
Поля | |
---|---|
link | Ссылка, которая открывается, когда пользователь нажимает на уведомление. Для всех значений URL требуется HTTPS. |
analytics_label | Метка, связанная с аналитическими данными сообщения. |
ApnsConfig
Специальные параметры службы push-уведомлений Apple .
JSON-представление |
---|
{
"headers": {
string: string,
...
},
"payload": {
object
},
"fcm_options": {
object ( |
Поля | |
---|---|
headers | Заголовки HTTP-запросов, определенные в службе push-уведомлений Apple. Обратитесь к заголовкам запросов APN, чтобы узнать о поддерживаемых заголовках, таких как Серверная часть устанавливает значение по умолчанию для Объект, содержащий список пар |
payload | Полезная нагрузка APN в виде объекта JSON, включая словарь |
fcm_options | Варианты функций, предоставляемых FCM SDK для iOS. |
ApnsFcmOptions
Варианты функций, предоставляемых FCM SDK для iOS.
JSON-представление |
---|
{ "analytics_label": string, "image": string } |
Поля | |
---|---|
analytics_label | Метка, связанная с аналитическими данными сообщения. |
image | Содержит URL-адрес изображения, которое будет отображаться в уведомлении. Если он присутствует, он переопределит |
FcmOptions
Независимые от платформы опции для функций, предоставляемых пакетами FCM SDK.
JSON-представление |
---|
{ "analytics_label": string } |
Поля | |
---|---|
analytics_label | Метка, связанная с аналитическими данными сообщения. |
Методы | |
---|---|
| Отправьте сообщение указанной цели (токен регистрации, тема или условие). |