Recurso: Mensaje
Es el mensaje que se enviará por el servicio de Firebase Cloud Messaging.
Representación JSON |
---|
{ "name": string, "data": { string: string, ... }, "notification": { object ( |
Campos | |
---|---|
name |
Solo salida. El identificador del mensaje enviado, en el formato |
data |
Solo entrada. Carga útil de par clave-valor arbitraria, que debe estar codificada en UTF-8. La clave no debe ser una palabra reservada ("from", "message_type", ni ninguna palabra que comience con "google" o "gcm"). Cuando se envían cargas útiles que solo contienen campos de datos a dispositivos iOS, solo se permite la prioridad normal ( Un objeto que contiene una lista de pares |
notification |
Solo entrada. Plantilla de notificación básica para usar en todas las plataformas. |
android |
Solo entrada. Opciones específicas de Android para los mensajes que se envían a través del servidor de conexiones de FCM. |
webpush |
Solo entrada. Opciones del protocolo Webpush. |
apns |
Solo entrada. Opciones específicas del Servicio de notificaciones push de Apple. |
fcm_options |
Solo entrada. Plantilla de las opciones de funciones del SDK de FCM para usar en todas las plataformas. |
Campo de unión target . Obligatorio. Solo entrada. Destino al que se enviará el mensaje. target puede ser solo uno de los siguientes: |
|
token |
Token de registro al que se enviará un mensaje. |
topic |
Nombre del tema al que se enviará un mensaje, p.ej., "clima". Nota: No se debe proporcionar el prefijo "/topics/". |
condition |
Condiciones para enviar un mensaje, por ejemplo, "'foo' in topics && 'bar' in topics". |
Notificación
Plantilla de notificación básica para usar en todas las plataformas.
Representación JSON |
---|
{ "title": string, "body": string, "image": string } |
Campos | |
---|---|
title |
El título de la notificación. |
body |
El texto del cuerpo de la notificación. |
image |
Contiene la URL de una imagen que se descargará en el dispositivo y se mostrará en una notificación. JPEG, PNG y BMP tienen compatibilidad total en todas las plataformas. Los GIF animados y los videos solo funcionan en iOS. WebP y HEIF tienen diferentes niveles de compatibilidad entre plataformas y versiones de plataformas. Android tiene un límite de tamaño de imagen de 1 MB. Uso de la cuota y también implicaciones o costos para alojar imágenes en Firebase Storage: https://firebase.google.com/pricing |
AndroidConfig
Opciones específicas de Android para los mensajes que se envían a través del servidor de conexiones de FCM.
Representación JSON |
---|
{ "collapse_key": string, "priority": enum ( |
Campos | |
---|---|
collapse_key |
Es un identificador de un grupo de mensajes que puede contraerse, de modo que solo se envíe el último mensaje cuando se reanude la entrega. Se permite un máximo de 4 claves de contracción diferentes en cualquier momento. |
priority |
La prioridad del mensaje. Puede tomar valores "normal" y "alto". Para obtener más información, consulta Configura la prioridad de un mensaje. |
ttl |
Cuánto tiempo (en segundos) se debe guardar el mensaje en el almacenamiento de FCM si el dispositivo está sin conexión. El tiempo de vida máximo admitido es de 4 semanas; si no se configura, el valor predeterminado es de 4 semanas. Establece esta opción en 0 si deseas enviar el mensaje de inmediato. En el formato JSON, el tipo de duración se codifica como una cadena en lugar de un objeto, en el que la cadena termina en el sufijo "s" (que indica segundos), y está precedida por la cantidad de segundos, y los nanosegundos se expresan como segundos fraccionarios. Por ejemplo, 3 segundos con 0 nanosegundos se deben codificar en formato JSON como “3 s”, mientras que 3 segundos y 1 nanosegundo deben expresarse en formato JSON como “3.000000001s”. El ttl se redondeará hacia abajo hasta el segundo más cercano. Una duración en segundos con hasta nueve dígitos decimales, que terminan en “ |
restricted_package_name |
Nombre del paquete de la aplicación donde el token de registro debe coincidir para recibir el mensaje. |
data |
Carga útil de par clave-valor arbitraria. Si está presente, anulará Un objeto que contiene una lista de pares |
notification |
Notificación para enviar a dispositivos Android. |
fcm_options |
Opciones de funciones que proporciona el SDK de FCM para Android. |
direct_boot_ok |
Si se configura como verdadera, se podrán entregar mensajes a la app mientras el dispositivo se encuentre en modo de inicio directo. Consulta Compatibilidad con el modo de inicio directo. |
AndroidMessagePriority
Prioridad de un mensaje para enviar a dispositivos Android. Ten en cuenta que esta prioridad es un concepto de FCM que controla cuándo se entrega el mensaje. Consulta las guías de FCM. Además, puedes determinar la prioridad de visualización de notificaciones en los dispositivos Android de destino mediante AndroidNotification.NotificationPriority.
Enums | |
---|---|
NORMAL |
Prioridad predeterminada para los mensajes de datos. Los mensajes con prioridad normal no abren conexiones de red en un dispositivo suspendido y es posible que su entrega se retrase para ahorrar batería. Para los mensajes menos urgentes, como las notificaciones de correos electrónicos nuevos y otros datos para sincronizar, elige la prioridad de entrega normal. |
HIGH |
Prioridad predeterminada para los mensajes de notificación. FCM intenta entregar los mensajes de alta prioridad de inmediato, lo que permite que el servicio de FCM active un dispositivo suspendido cuando sea posible y abra una conexión de red a tu servidor de apps. Las aplicaciones con mensajería instantánea, chat o alertas de llamadas de voz, por ejemplo, generalmente necesitan abrir una conexión de red y asegurarse de que FCM entregue el mensaje al dispositivo sin demora. Establece la prioridad alta si el mensaje es urgente y requiere la interacción inmediata del usuario, pero ten en cuenta que configurar los mensajes con prioridad alta consume más batería en comparación con los mensajes de prioridad normal. |
AndroidNotification
Notificación para enviar a dispositivos Android.
Representación 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 ( |
Campos | |
---|---|
title |
El título de la notificación. Si está presente, anulará |
body |
El texto del cuerpo de la notificación. Si está presente, anulará |
icon |
El ícono de la notificación. Establece el ícono de notificación en myicon para el elemento de diseño del recurso myicon. Si no envías esta clave en la solicitud, FCM muestra el ícono de selector especificado en el manifiesto de la app. |
color |
El color del ícono de la notificación, expresado en formato #rrggbb. |
sound |
El sonido que se reproduce cuando el dispositivo recibe la notificación. Admite "default" o el nombre de archivo de un recurso de sonido incluido en la app. Los archivos de sonido deben estar en /res/raw/. |
tag |
Identificador que se usa para reemplazar las notificaciones existentes en el panel lateral de notificaciones. Si no se configura, cada solicitud crea una nueva notificación. Si se especifica y ya se muestra una notificación con la misma etiqueta, la notificación nueva reemplaza la existente en el panel lateral de notificaciones. |
click_action |
La acción asociada con el clic de un usuario en la notificación. Si se especifica, se lanza una actividad con un filtro de intents coincidentes cuando un usuario hace clic en la notificación. |
body_loc_key |
La clave de la cadena del cuerpo en los recursos de cadenas de la app que se usa para localizar el texto del cuerpo en la localización actual del usuario. Consulta Recursos de cadenas para obtener más información. |
body_loc_args[] |
Valores de cadena variables que se usarán en lugar de los especificadores de formato en body_loc_key para localizar el cuerpo del texto en la localización actual del usuario. Consulta Formato y estilo para obtener más información. |
title_loc_key |
La clave de la cadena del título en los recursos de cadenas de la app que se usa para localizar el texto del título según la localización actual del usuario. Consulta Recursos de cadenas para obtener más información. |
title_loc_args[] |
Valores de cadena variables que se usarán en lugar de los especificadores de formato en title_loc_key para localizar el título del texto en la localización actual del usuario. Consulta Formato y estilo para obtener más información. |
channel_id |
El ID de canal de la notificación (nuevo en Android O). La app debe crear un canal con este ID antes de que se reciba cualquier notificación con este ID. Si no envías este ID de canal en la solicitud o si la app aún no crea el ID proporcionado, FCM usa el ID del canal especificado en el manifiesto de la app. |
ticker |
Establece el texto "cotización", que se envía a los servicios de accesibilidad. En las versiones anteriores al nivel de API 21 ( |
sticky |
Si la estableces como falsa o no la estableces, la notificación se descartará automáticamente cuando el usuario haga clic en ella en el panel. Cuando se configura como verdadera, la notificación persiste incluso cuando el usuario hace clic en ella. |
event_time |
Establece la hora a la que se produjo el evento en la notificación. Las notificaciones del panel se ordenan por este momento. Un momento determinado se representa con protobuf.Timestamp. Una marca de tiempo en formato RFC3339 UTC “Zulú”, con una resolución de nanosegundos y hasta nueve dígitos fraccionarios. Ejemplos: |
local_only |
Establece si esta notificación es relevante solo para el dispositivo actual o no. Algunas notificaciones se pueden compartir en modo puente con otros dispositivos para pantallas remotas, como un reloj Wear OS. Se puede configurar esta sugerencia para recomendar que no se comparta esta notificación en modo puente. Consulta las guías de Wear OS. |
notification_priority |
Establece la prioridad relativa para esta notificación. La prioridad es un indicador de cuánta atención del usuario debe consumir esta notificación. En determinadas situaciones, es posible que no se muestren las notificaciones de baja prioridad, mientras que el usuario podría interrumpirse debido a una notificación de mayor prioridad. El efecto de establecer las mismas prioridades puede variar levemente según la plataforma. Ten en cuenta que esta prioridad difiere de |
default_sound |
Si se configura como verdadera, usa el sonido predeterminado del framework de Android para la notificación. Los valores predeterminados se especifican en config.xml. |
default_vibrate_timings |
Si la estableces como verdadera, usa el patrón de vibración predeterminado del framework de Android para la notificación. Los valores predeterminados se especifican en config.xml. Si estableces |
default_light_settings |
Si la estableces como verdadera, usa la configuración de luz LED predeterminada del framework de Android para la notificación. Los valores predeterminados se especifican en config.xml. Si estableces |
vibrate_timings[] |
Establece el patrón de vibración para usar. Pasa un array de protobuf.Duration para activar o desactivar el vibrador. El primer valor indica el Una duración en segundos con hasta nueve dígitos decimales, que terminan en “ |
visibility |
Establece el valor de Notification.visibility en la notificación. |
notification_count |
Establece la cantidad de elementos que representa esta notificación. Puede mostrarse como un recuento de insignias para los selectores que admiten insignias.Consulta Insignia de notificación. Por ejemplo, esto podría ser útil si usas una sola notificación para representar varios mensajes nuevos, pero quieres que la cantidad represente la cantidad total de mensajes nuevos. Si el valor es cero o no se especifica, los sistemas que admiten insignias usan el valor predeterminado, que consiste en aumentar un número que se muestra en el menú de presión prolongada cada vez que llega una notificación nueva. |
light_settings |
Configuración para controlar la velocidad de intermitencia y el color del LED de la notificación si el LED está disponible en el dispositivo. El SO controla el tiempo parpadeante total. |
image |
Contiene la URL de una imagen que se mostrará en una notificación. Si está presente, anulará |
proxy |
Es un parámetro de configuración que permite controlar cuándo se pueden enviar las notificaciones a través de un proxy. |
PrioridaddeNotificaciones
Los niveles de prioridad de una notificación.
Enums | |
---|---|
PRIORITY_UNSPECIFIED |
Si no se especifica la prioridad, la prioridad de la notificación se establece en PRIORITY_DEFAULT . |
PRIORITY_MIN |
Prioridad de notificación más baja. Es posible que las notificaciones con este PRIORITY_MIN no se muestren al usuario, excepto en circunstancias especiales, como los registros de notificaciones detallados. |
PRIORITY_LOW |
Prioridad de notificaciones menor. La IU puede elegir mostrar las notificaciones más pequeñas o en una posición diferente en la lista, en comparación con las notificaciones con PRIORITY_DEFAULT . |
PRIORITY_DEFAULT |
Prioridad de notificación predeterminada. Si la aplicación no prioriza sus propias notificaciones, usa este valor para todas las notificaciones. |
PRIORITY_HIGH |
Prioridad de notificación más alta Úsalo para recibir notificaciones o alertas más importantes. La IU puede elegir mostrar estas notificaciones en un tamaño más grande o en una posición diferente en las listas de notificaciones, en comparación con las notificaciones con PRIORITY_DEFAULT . |
PRIORITY_MAX |
Máxima prioridad de notificación. Usa este tipo para los elementos más importantes de la aplicación que requieren la atención o la entrada del usuario. |
Visibilidad
Diferentes niveles de visibilidad de una notificación
Enums | |
---|---|
VISIBILITY_UNSPECIFIED |
Si no se especifica, el valor predeterminado es Visibility.PRIVATE . |
PRIVATE |
Mostrar esta notificación en todas las pantallas de bloqueo, pero ocultar información sensible o privada en pantallas de bloqueo seguras. |
PUBLIC |
Mostrar esta notificación completa en todas las pantallas de bloqueo |
SECRET |
No reveles ninguna parte de la notificación en una pantalla de bloqueo segura. |
Configuración de luz
Es la configuración para controlar el LED de notificaciones.
Representación JSON |
---|
{
"color": {
object ( |
Campos | |
---|---|
color |
Obligatorio. Establece |
light_on_duration |
Obligatorio. Junto con Una duración en segundos con hasta nueve dígitos decimales, que terminan en “ |
light_off_duration |
Obligatorio. Junto con Una duración en segundos con hasta nueve dígitos decimales, que terminan en “ |
Color
Representa un color en el espacio de color RGBA. Esta representación está diseñada para simplificar la conversión hacia y desde representaciones de color en varios idiomas sobre la compactación. Por ejemplo, los campos de esta representación se pueden proporcionar trivialmente al constructor de java.awt.Color
en Java; también se pueden proporcionar de manera trivial al método +colorWithRed:green:blue:alpha
de UIColor en iOS. Con solo un poco de trabajo, se le puede dar formato fácilmente a una cadena rgba()
de CSS en JavaScript.
Esta página de referencia no tiene información sobre el espacio de color absoluto que debe usarse para interpretar el valor RGB, por ejemplo, sRGB, Adobe RGB, DCI-P3 y BT.2020. De forma predeterminada, las aplicaciones deben asumir el espacio de color sRGB.
Cuando se debe decidir la igualdad de color, las implementaciones, a menos que se documente lo contrario, tratan dos colores como iguales si todos sus valores de rojo, verde, azul y alfa difieren como máximo en 1e-5
.
Ejemplo (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();
}
// ...
Ejemplo (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;
}
// ...
Ejemplo (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('');
};
// ...
Representación JSON |
---|
{ "red": number, "green": number, "blue": number, "alpha": number } |
Campos | |
---|---|
red |
La cantidad de rojo en el color como un valor en el intervalo [0, 1]. |
green |
La cantidad de verde en el color como un valor en el intervalo [0, 1]. |
blue |
La cantidad de azul en el color como un valor en el intervalo [0, 1]. |
alpha |
La fracción de este color que se debe aplicar al píxel. Es decir, el color del píxel final se define mediante la siguiente ecuación:
Esto significa que el valor 1.0 corresponde a un color sólido, mientras que el valor 0.0 corresponde a un color completamente transparente. Esto utiliza un mensaje de wrapper en lugar de un escalar flotante simple, para que sea posible distinguir entre un valor predeterminado y el valor que no se configura. Si se omite, este objeto de color se renderiza como un color sólido (como si al valor alfa se le hubiera dado explícitamente un valor de 1.0). |
Proxy
Es un parámetro de configuración que permite controlar cuándo se pueden enviar las notificaciones a través de un proxy.
Enums | |
---|---|
PROXY_UNSPECIFIED |
Si no se especifica, el valor predeterminado es Proxy.IF_PRIORITY_LOWERED . |
ALLOW |
Intenta usar un proxy en esta notificación. |
DENY |
No enviar esta notificación mediante proxy. |
IF_PRIORITY_LOWERED |
Intenta establecer esta notificación como proxy solo si se redujo su AndroidMessagePriority de HIGH a NORMAL en el dispositivo. |
Opciones AndroidFcm
Opciones de funciones que proporciona el SDK de FCM para Android.
Representación JSON |
---|
{ "analytics_label": string } |
Campos | |
---|---|
analytics_label |
Etiqueta asociada con los datos de estadísticas del mensaje. |
WebpushConfig
Opciones del protocolo Webpush.
Representación JSON |
---|
{
"headers": {
string: string,
...
},
"data": {
string: string,
...
},
"notification": {
object
},
"fcm_options": {
object ( |
Campos | |
---|---|
headers |
Los encabezados HTTP definidos en el protocolo webpush. Consulta el protocolo Webpush para conocer los encabezados compatibles, p.ej., "TTL": "15". Un objeto que contiene una lista de pares |
data |
Carga útil de par clave-valor arbitraria. Si está presente, anulará Un objeto que contiene una lista de pares |
notification |
Opciones de notificaciones web como un objeto JSON. Admite las propiedades de instancia de notificación según se define en la API de Web Notification. Si están presentes, los campos "title" y "body" anulan |
fcm_options |
Opciones de funciones que proporciona el SDK de FCM para la Web. |
WebpushFcmOptions
Opciones de funciones que proporciona el SDK de FCM para la Web.
Representación JSON |
---|
{ "link": string, "analytics_label": string } |
Campos | |
---|---|
link |
Es el vínculo que se debe abrir cuando el usuario hace clic en la notificación. Para todos los valores de URL, se debe usar el protocolo HTTPS. |
analytics_label |
Etiqueta asociada con los datos de estadísticas del mensaje. |
ApnsConfig
Opciones específicas del Servicio de notificaciones push de Apple.
Representación JSON |
---|
{
"headers": {
string: string,
...
},
"payload": {
object
},
"fcm_options": {
object ( |
Campos | |
---|---|
headers |
Encabezados de solicitud HTTP definidos en el Servicio de notificaciones push de Apple. Consulta Encabezados de solicitud de APNS para conocer los encabezados compatibles, como El backend establece un valor predeterminado para Un objeto que contiene una lista de pares |
payload |
Carga útil de APNS como un objeto JSON, incluida la carga útil personalizada y del diccionario de |
fcm_options |
Opciones de funciones que proporciona el SDK de FCM para iOS. |
Opciones de ApnsFcm
Opciones de funciones que proporciona el SDK de FCM para iOS.
Representación JSON |
---|
{ "analytics_label": string, "image": string } |
Campos | |
---|---|
analytics_label |
Etiqueta asociada con los datos de estadísticas del mensaje. |
image |
Contiene la URL de una imagen que se mostrará en una notificación. Si está presente, anulará |
Opciones de FCM
Opciones independientes de la plataforma para las funciones que proporcionan los SDK de FCM.
Representación JSON |
---|
{ "analytics_label": string } |
Campos | |
---|---|
analytics_label |
Etiqueta asociada con los datos de estadísticas del mensaje. |
Métodos |
|
---|---|
|
Envía un mensaje al destino especificado (un token de registro, un tema o una condición). |