Recurso: Mensaje
Mensaje para enviar por Firebase Cloud Messaging Service.
Representación JSON |
---|
{ "name": string, "data": { string: string, ... }, "notification": { object ( |
Campos | |
---|---|
name | Sólo salida. El identificador del mensaje enviado, en el formato |
data | Sólo entrada. Carga útil de clave/valor arbitrario, que debe estar codificada en UTF-8. La clave no debe ser una palabra reservada ("de", "tipo_mensaje" ni ninguna palabra que comience con "google" o "gcm"). Al enviar 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 | Sólo entrada. Plantilla de notificación básica para usar en todas las plataformas. |
android | Sólo entrada. Opciones específicas de Android para mensajes enviados a través del servidor de conexión FCM . |
webpush | Sólo entrada. Opciones del protocolo Webpush . |
apns | Sólo entrada. Opciones específicas del servicio de notificaciones push de Apple . |
fcm_options | Sólo entrada. Plantilla para opciones de funciones de FCM SDK para usar en todas las plataformas. |
target de campo de la Unión. Requerido. Sólo entrada. Destino al que enviar un mensaje. target puede ser sólo uno de los siguientes: | |
token | Token de registro al que enviar un mensaje. |
topic | Nombre del tema al que enviar un mensaje, por ejemplo, "clima". Nota: No se debe proporcionar el prefijo "/topics/". |
condition | Condición a la que enviar un mensaje, por ejemplo, "'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. JPEG, PNG, BMP son totalmente compatibles con todas las plataformas. Los GIF y vídeos animados solo funcionan en iOS. WebP y HEIF tienen distintos niveles de soporte según plataformas y versiones de plataforma. Android tiene un límite de tamaño de imagen de 1 MB. Uso de cuotas e implicaciones/costos para alojar imágenes en Firebase Storage: https://firebase.google.com/pricing |
Configuración de Android
Opciones específicas de Android para mensajes enviados a través del servidor de conexión 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 pueda reanudar la entrega. Se permite un máximo de 4 claves de colapso diferentes en un momento dado. |
priority | Prioridad del mensaje. Puede tomar valores "normales" y "altos". Para obtener más información, consulte Configuración de la prioridad de un mensaje . |
ttl | Cuánto tiempo (en segundos) debe mantenerse el mensaje en el almacenamiento de FCM si el dispositivo está fuera de línea. El tiempo de vida máximo admitido es de 4 semanas y el valor predeterminado es de 4 semanas si no se establece. Configúrelo en 0 si desea enviar el mensaje inmediatamente. En formato JSON, el tipo Duración está codificado como una cadena en lugar de un objeto, donde la cadena termina en el sufijo "s" (que indica segundos) y está precedida por el número de segundos, con los nanosegundos expresados como fracciones de segundo. Por ejemplo, 3 segundos con 0 nanosegundos deben codificarse en formato JSON como "3s", mientras que 3 segundos y 1 nanosegundo deben expresarse en formato JSON como "3.000000001s". El ttl se redondeará al segundo más cercano. Una duración en segundos con hasta nueve dígitos fraccionarios, que termina en ' |
restricted_package_name | Nombre del paquete de la aplicación donde debe coincidir el token de registro para recibir el mensaje. |
data | Carga útil de clave/valor arbitrario. Si está presente, anulará Un objeto que contiene una lista de pares |
notification | Notificación para enviar a dispositivos Android. |
fcm_options | Opciones para funciones proporcionadas por FCM SDK para Android. |
direct_boot_ok | Si se establece en verdadero, se permitirá que los mensajes se entreguen a la aplicación mientras el dispositivo esté en modo de inicio directo. Consulte Admite el modo de inicio directo . |
AndroidMensajePrioridad
Prioridad de un mensaje a enviar a dispositivos Android. Tenga en cuenta que esta prioridad es un concepto de FCM que controla cuándo se entrega el mensaje. Consulte las guías de FCM . Además, puede determinar la prioridad de visualización de notificaciones en dispositivos Android específicos mediante AndroidNotification.NotificationPriority .
Enumeraciones | |
---|---|
NORMAL | Prioridad predeterminada para mensajes de datos. Los mensajes de prioridad normal no abrirán conexiones de red en un dispositivo inactivo y su entrega puede retrasarse para conservar la batería. Para mensajes menos urgentes, como notificaciones de nuevos correos electrónicos u otros datos para sincronizar, elija la prioridad de entrega normal. |
HIGH | Prioridad predeterminada para mensajes de notificación. FCM intenta entregar mensajes de alta prioridad de inmediato, lo que permite que el servicio FCM active un dispositivo inactivo cuando sea posible y abra una conexión de red con su servidor de aplicaciones. Las aplicaciones con alertas de mensajería instantánea, chat o 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. Establezca una prioridad alta si el mensaje es crítico y requiere la interacción inmediata del usuario, pero tenga en cuenta que configurar sus mensajes en prioridad alta contribuye más al consumo de batería en comparación con los mensajes de prioridad normal. |
AndroidNotificación
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 icono de notificación. Establece el ícono de notificación en myicon para el recurso dibujable myicon. Si no envía esta clave en la solicitud, FCM muestra el icono del iniciador especificado en el manifiesto de su aplicación. |
color | El color del icono de la notificación, expresado en formato #rrggbb. |
sound | El sonido que se reproducirá cuando el dispositivo reciba la notificación. Admite "predeterminado" o el nombre de archivo de un recurso de sonido incluido en la aplicación. Los archivos de sonido deben residir en /res/raw/. |
tag | Identificador utilizado para reemplazar notificaciones existentes en el cajón de notificaciones. Si no se especifica, 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 cajón de notificaciones. |
click_action | La acción asociada con un usuario hace clic en la notificación. Si se especifica, se inicia una actividad con un filtro de intención coincidente cuando un usuario hace clic en la notificación. |
body_loc_key | La clave de la cadena del cuerpo en los recursos de cadena de la aplicación que se usará para localizar el texto del cuerpo a la localización actual del usuario. Consulte Recursos de cadenas para obtener más información. |
body_loc_args[] | Valores de cadena variables que se utilizarán en lugar de los especificadores de formato en body_loc_key para localizar el texto del cuerpo a la localización actual del usuario. Consulte Formato y estilo para obtener más información. |
title_loc_key | La clave de la cadena de título en los recursos de cadena de la aplicación que se usará para localizar el texto del título a la localización actual del usuario. Consulte Recursos de cadenas para obtener más información. |
title_loc_args[] | Valores de cadena variables que se utilizarán en lugar de los especificadores de formato en title_loc_key para localizar el texto del título a la localización actual del usuario. Consulte Formato y estilo para obtener más información. |
channel_id | La identificación del canal de notificación (nuevo en Android O). La aplicación debe crear un canal con este ID de canal antes de recibir cualquier notificación con este ID de canal. Si no envía este ID de canal en la solicitud, o si la aplicación aún no ha creado el ID de canal proporcionado, FCM usa el ID de canal especificado en el manifiesto de la aplicación. |
ticker | Establece el texto del "ticker", que se envía a los servicios de accesibilidad. Antes del nivel API 21 ( |
sticky | Cuando se establece en falso o no se configura, la notificación se descarta automáticamente cuando el usuario hace clic en ella en el panel. Cuando se establece en verdadero, la notificación persiste incluso cuando el usuario hace clic en ella. |
event_time | Establezca la hora en que ocurrió el evento en la notificación. Las notificaciones en el panel están ordenadas por este tiempo. Un punto en el tiempo se representa mediante protobuf.Timestamp . Una marca de tiempo en formato RFC3339 UTC "Zulu", con resolución de nanosegundos y hasta nueve dígitos fraccionarios. Ejemplos: |
local_only | Establezca si esta notificación es relevante o no solo para el dispositivo actual. Algunas notificaciones se pueden conectar a otros dispositivos para su visualización remota, como un reloj Wear OS. Esta sugerencia se puede configurar para recomendar que esta notificación no se puentee. Ver guías de Wear OS |
notification_priority | Establezca la prioridad relativa para esta notificación. La prioridad es una indicación de cuánta atención del usuario debe consumir esta notificación. Las notificaciones de baja prioridad pueden ocultarse al usuario en determinadas situaciones, mientras que el usuario puede ser interrumpido por una notificación de mayor prioridad. El efecto de establecer las mismas prioridades puede diferir ligeramente en diferentes plataformas. Tenga en cuenta que esta prioridad difiere de |
default_sound | Si se establece en verdadero, use el sonido predeterminado del marco de Android para la notificación. Los valores predeterminados se especifican en config.xml . |
default_vibrate_timings | Si se establece en verdadero, use el patrón de vibración predeterminado del marco de Android para la notificación. Los valores predeterminados se especifican en config.xml . Si |
default_light_settings | Si se establece en verdadero, use la configuración de luz LED predeterminada del marco de Android para la notificación. Los valores predeterminados se especifican en config.xml . Si |
vibrate_timings[] | Configure el patrón de vibración a utilizar. Pase una serie de protobuf.Duración para encender o apagar el vibrador. El primer valor indica la Una duración en segundos con hasta nueve dígitos fraccionarios, que termina en ' |
visibility | Establezca la visibilidad de notificación de la notificación. |
notification_count | Establece el número de elementos que representa esta notificación. Puede mostrarse como un recuento de insignias para los lanzadores que admiten insignias. Consulte Insignia de notificación . Por ejemplo, esto puede resultar útil si utiliza una sola notificación para representar varios mensajes nuevos, pero desea que el recuento aquí represente el número total de mensajes nuevos. Si es cero o no se especifica, los sistemas que admiten credenciales utilizan el valor predeterminado, que consiste en incrementar un número que se muestra en el menú de pulsación larga cada vez que llega una nueva notificación. |
light_settings | Configuraciones para controlar la velocidad de parpadeo del LED de la notificación y el color si el LED está disponible en el dispositivo. El tiempo total de parpadeo lo controla el sistema operativo. |
image | Contiene la URL de una imagen que se mostrará en una notificación. Si está presente, anulará |
Prioridad de notificación
Niveles de prioridad de una notificación.
Enumeraciones | |
---|---|
PRIORITY_UNSPECIFIED | Si no se especifica la prioridad, la prioridad de 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 registros de notificaciones detallados. |
PRIORITY_LOW | Menor prioridad de notificación. La interfaz de usuario puede optar por mostrar las notificaciones en un tamaño más pequeño 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, utilice este valor para todas las notificaciones. |
PRIORITY_HIGH | Mayor prioridad de notificación. Úselo para notificaciones o alertas más importantes. La interfaz de usuario puede optar por mostrar estas notificaciones en mayor tamaño 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. Utilícelo para los elementos más importantes de la aplicación que requieren la rápida atención o entrada del usuario. |
Visibilidad
Diferentes niveles de visibilidad de una notificación.
Enumeraciones | |
---|---|
VISIBILITY_UNSPECIFIED | Si no se especifica, el valor predeterminado es Visibility.PRIVATE . |
PRIVATE | Muestre esta notificación en todas las pantallas de bloqueo, pero oculte información confidencial o privada en pantallas de bloqueo seguras. |
PUBLIC | Muestra esta notificación en su totalidad en todas las pantallas de bloqueo. |
SECRET | No reveles ninguna parte de esta notificación en una pantalla de bloqueo segura. |
Configuración de luz
Configuraciones para controlar el LED de notificaciones.
Representación JSON |
---|
{
"color": {
object ( |
Campos | |
---|---|
color | Requerido. Establezca |
light_on_duration | Requerido. Junto con Una duración en segundos con hasta nueve dígitos fraccionarios, que termina en ' |
light_off_duration | Requerido. Junto con Una duración en segundos con hasta nueve dígitos fraccionarios, que termina en ' |
Color
Representa un color en el espacio de color RGBA. Esta representación está diseñada para simplificar la conversión hacia/desde representaciones de color en varios idiomas en lugar de ser compacta. Por ejemplo, los campos de esta representación se pueden proporcionar trivialmente al constructor de java.awt.Color
en Java; también se puede proporcionar trivialmente al método +colorWithRed:green:blue:alpha
UIColor en iOS; y, con sólo un poco de trabajo, se puede formatear fácilmente en una cadena CSS rgba()
en JavaScript.
Esta página de referencia no contiene información sobre el espacio de color absoluto que se debe utilizar para interpretar el valor RGB (por ejemplo, sRGB, Adobe RGB, DCI-P3, BT.2020, etc.). De forma predeterminada, las aplicaciones deben asumir el espacio de color sRGB.
Cuando es necesario decidir la igualdad de colores, 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 cada uno 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 valor en el intervalo [0, 1]. |
green | La cantidad de verde en el color como valor en el intervalo [0, 1]. |
blue | La cantidad de azul en el color como valor en el intervalo [0, 1]. |
alpha | La fracción de este color que se debe aplicar al píxel. Es decir, el color final del píxel está definido por la ecuación: Esto significa que un valor de 1,0 corresponde a un color sólido, mientras que un valor de 0,0 corresponde a un color completamente transparente. Esto utiliza un mensaje contenedor en lugar de un simple escalar flotante para que sea posible distinguir entre un valor predeterminado y el valor que no se está configurando. 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). |
Opciones de AndroidFcm
Opciones para funciones proporcionadas por FCM SDK para Android.
Representación JSON |
---|
{ "analytics_label": string } |
Campos | |
---|---|
analytics_label | Etiqueta asociada a los datos analíticos 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. Consulte el protocolo Webpush para conocer los encabezados admitidos, por ejemplo, "TTL": "15". Un objeto que contiene una lista de pares |
data | Carga útil de clave/valor arbitrario. Si está presente, anulará Un objeto que contiene una lista de pares |
notification | Opciones de notificación web como objeto JSON. Admite propiedades de instancia de notificación tal como se definen en la API de notificación web . Si están presentes, los campos "título" y "cuerpo" anulan |
fcm_options | Opciones para las funciones proporcionadas por FCM SDK para Web. |
Opciones de WebpushFcm
Opciones para las funciones proporcionadas por FCM SDK para Web.
Representación JSON |
---|
{ "link": string, "analytics_label": string } |
Campos | |
---|---|
link | El enlace que se abrirá cuando el usuario haga clic en la notificación. Para todos los valores de URL, se requiere HTTPS. |
analytics_label | Etiqueta asociada a los datos analíticos 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. Consulte los encabezados de solicitud de APN para conocer los encabezados admitidos, como El backend establece un valor predeterminado para Un objeto que contiene una lista de pares |
payload | Carga útil de APN como un objeto JSON, incluido el diccionario |
fcm_options | Opciones para funciones proporcionadas por FCM SDK para iOS. |
Opciones de ApnsFcm
Opciones para funciones proporcionadas por FCM SDK para iOS.
Representación JSON |
---|
{ "analytics_label": string, "image": string } |
Campos | |
---|---|
analytics_label | Etiqueta asociada a los datos analíticos 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 proporcionadas por los SDK de FCM.
Representación JSON |
---|
{ "analytics_label": string } |
Campos | |
---|---|
analytics_label | Etiqueta asociada a los datos analíticos del mensaje. |
Métodos | |
---|---|
| Enviar un mensaje a un destino específico (un token de registro, tema o condición). |