Recurso: Mensaje
Es el mensaje que debe enviar 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 de |
data |
Solo entrada. Carga útil de 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 empiece con “google.” o “gcm.notification.”). Cuando se envían cargas útiles que contienen solo 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 enviados 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 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á un mensaje. target puede ser solo uno de los siguientes: |
|
token |
Token de registro para enviar un mensaje. |
topic |
Es el nombre del tema al que se envía un mensaje, p.ej., "clima". Nota: “/topics/” no se debe proporcionar el prefijo. |
condition |
Condiciones para enviar un mensaje, p.ej., “'foo' en temas && 'bar' en temas". |
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. Los archivos JPEG, PNG y BMP son totalmente compatibles con todas las plataformas. Los GIF y videos animados solo funcionan en iOS. WebP y HEIF tienen diferentes niveles de compatibilidad entre plataformas y versiones de plataforma. Android tiene un límite de tamaño de 1 MB para las imágenes. Uso de la cuota y costos/implicaciones de alojar imágenes en Firebase Storage: https://firebase.google.com/pricing |
AndroidConfig
Opciones específicas de Android para los mensajes enviados a través del servidor de conexiones de FCM.
Representación JSON |
---|
{ "collapse_key": string, "priority": enum ( |
Campos | |
---|---|
collapse_key |
Un identificador de un grupo de mensajes que se pueden contraer, 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 la palabra “normal” y "alto" de salida. Para obtener más información, consulta Cómo configurar 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 y, si no se configura, el valor predeterminado es de 4 semanas. Establécelo en 0 si deseas enviar el mensaje inmediatamente. En el formato JSON, el tipo Duration está codificado como una cadena en lugar de un objeto, en el que la cadena termina con el sufijo “s”. (indica los segundos) y está precedido por la cantidad de segundos, con los nanosegundos expresados como segundos fraccionarios. Por ejemplo, 3 segundos con 0 nanosegundos se deben codificar en formato JSON como “3s”, mientras que 3 segundos y 1 nanosegundo se deben expresar 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 |
El nombre del paquete de la aplicación donde el token de registro debe coincidir para recibir el mensaje. |
data |
Carga útil de 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 para las funciones que proporciona el SDK de FCM para Android. |
direct_boot_ok |
Si se establece como verdadera, se permitirá que los mensajes se entreguen a la app mientras el dispositivo esté en modo de inicio directo. Consulta Cómo admitir el modo de inicio directo. |
AndroidMessagePriority
La 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 usar AndroidNotification.NotificationPriority para determinar la prioridad de visualización de las notificaciones en los dispositivos Android de destino.
Enums | |
---|---|
NORMAL |
Prioridad predeterminada para los mensajes de datos. Los mensajes de prioridad normal no abren conexiones de red en un dispositivo suspendido y su entrega se puede retrasar para ahorrar batería. Para los mensajes menos urgentes, como las notificaciones de nuevos correos electrónicos u 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 apps con mensajería instantánea, chat o alertas de llamadas de voz, por ejemplo, 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 con 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. Configura el ícono de notificación como myicon para el recurso de elementos de diseño 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 la configuración predeterminada 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 nueva notificación 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 coincidente 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 los 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 los 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 ese 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 de canal especificado en el manifiesto de la app. |
ticker |
Establece la cotización. texto, que se envía a los servicios de accesibilidad. Antes del 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 ocurrió 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 con otros dispositivos para mostrarlas de manera remota, como un reloj Wear OS. Se puede configurar esta sugerencia para que no se transmita esta notificación. Consulta las guías de Wear OS |
notification_priority |
Establece la prioridad relativa de esta notificación. La prioridad indica cuánta atención del usuario debe consumir esta notificación. Las notificaciones de prioridad baja pueden ocultarse para el usuario en ciertas situaciones, mientras que el usuario podría verse interrumpido por una notificación de prioridad más alta. El efecto de establecer las mismas prioridades puede variar ligeramente según la plataforma. Ten en cuenta que esta prioridad es diferente de |
default_sound |
Si la estableces 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 se establece |
vibrate_timings[] |
Establece el patrón de vibración que se va a 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 campo Notification.visibility de la notificación. |
notification_count |
Establece la cantidad de elementos que representa esta notificación. Se puede mostrar como un recuento de insignias para los selectores compatibles con 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 el recuento aquí representa la cantidad total de mensajes nuevos. Si es cero o no se especifica, los sistemas que admiten insignias usan el valor predeterminado, que consiste en aumentar el 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 del LED de la notificación y el color si la luz LED está disponible en el dispositivo. El SO controla el tiempo total de intermitencia. |
image |
Contiene la URL de una imagen que se mostrará en una notificación. Si está presente, anulará |
bypass_proxy_notification |
Si se establece esta opción, la app no administrará las notificaciones en pantalla que se entreguen al dispositivo. |
proxy |
Configuración que permite controlar cuándo se puede enviar una notificación a través del proxy. |
Prioridad de notificación
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 |
La 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 registros de notificaciones detallados. |
PRIORITY_LOW |
Prioridad de notificación más baja. 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 notificaciones más alta. Usa esta opción para recibir notificaciones o alertas más importantes. La IU puede elegir mostrar estas notificaciones más grandes, o en una posición diferente en las listas de notificaciones, en comparación con las notificaciones con PRIORITY_DEFAULT . |
PRIORITY_MAX |
La prioridad de notificaciones más alta. Úsalo para los elementos más importantes de la aplicación que requieran la atención o 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 oculta información sensible o privada en pantallas de bloqueo seguras. |
PUBLIC |
Mostrar esta notificación en su totalidad en todas las pantallas de bloqueo. |
SECRET |
No reveles ninguna parte de la notificación en una pantalla bloqueada segura. |
Configuración de luz
Configuración para controlar el LED de notificaciones.
Representación JSON |
---|
{
"color": {
object ( |
Campos | |
---|---|
color |
Obligatorio. Establece el |
light_on_duration |
Obligatorio. Junto con la función Una duración en segundos con hasta nueve dígitos decimales, que terminan en “ |
light_off_duration |
Obligatorio. Junto con la función 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 desde y hacia las representaciones de color en varios idiomas por sobre la compactación. Por ejemplo, los campos de esta representación se pueden proporcionar de forma trivial al constructor de java.awt.Color
en Java. también se puede proporcionar trivialmente al método +colorWithRed:green:blue:alpha
de UIColor en iOS. y, con solo un poco de trabajo, se puede formatear fácilmente en una cadena CSS rgba()
en JavaScript.
Esta página de referencia no tiene información sobre el espacio de color absoluto que se debe usar 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 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 representa como un color sólido (como si al valor alfa se le hubiera dado explícitamente un valor de 1.0). |
Proxy
Configuración que permite controlar cuándo se puede enviar una notificación a través del 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 utilices esta notificación como proxy. |
IF_PRIORITY_LOWERED |
Intenta usar un proxy en esta notificación solo si tu AndroidMessagePriority se redujo de HIGH a NORMAL en el dispositivo. |
Opciones de AndroidFcm
Opciones para las 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 |
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 clave-valor arbitraria. Si está presente, anulará Un objeto que contiene una lista de pares |
notification |
Opciones de notificación web como un objeto JSON. Admite propiedades de instancias de notificaciones según se definen en la API de notificación web. Si está presente, se debe utilizar "title". y "body" Los campos anulan |
fcm_options |
Opciones para las funciones que proporciona el SDK de FCM para la Web. |
WebpushFcmOptions
Opciones para las 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 |
La carga útil de APNS como un objeto JSON, que incluye el diccionario |
fcm_options |
Opciones para las funciones que proporciona el SDK de FCM para iOS. |
Opciones de ApnsFcm
Opciones para las 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 plataformas para funciones proporcionadas por 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). |