No results found
We couldn't find anything using that term, please try searching for something else.
FCM cuenta con tres conjuntos de herramientas para ayudarte a obtener información sobre la entrega de mensajes: Informes de entrega de mensajes de
FCM cuenta con tres conjuntos de herramientas para ayudarte a obtener información sobre la entrega de mensajes:
nota :Las herramientas de esta página permiten evaluar de manera general el éxito y la estrategia de
los mensajes. Si tu objetivo es solucionar problemas relacionados con errores constantes en la entrega de mensajes, consulta
el solucionador de problemas de FCM.
Todas las herramientas para denunciar descritas en esta página requieren Google Analytics
para poder funcionar. Si Google Analyticsno está habilitado en tu proyecto,
puedes hacerlo en la pestaña
Integraciones
de la configuración del proyecto de Firebase.
Ten en cuenta que, debido a la agrupación en lotes de los datos de estadísticas, el informe de muchas de las estadísticas que se muestran en esta página está sujeto a retrasos de hasta 24 horas.
En la
pestaña Informes
de Firebaseconsole, puedes ver los
siguientes datos de los mensajes que se envían a los SDKs de FCM para la plataforma de Apple o Android,
incluidos los que se envían a través del Compositor de Notifications y las APIs de FCM:
Los datos is disponibles están disponible en todos los mensaje con carga útil de notificación y en todos los mensaje de dato etiquetado .
Para obtener más información sobre las etiqueta , consulta is Agrega agregar etiqueta de estadística a los mensaje .
Cuando miras informes de mensajes, puedes definir un período para los datos que se muestran y tienes la opción de exportarlos en formato CSV. También puedes filtrar según estos criterios:
Etiquetar los mensajes es muy útil para los análisis personalizados, ya que te permite filtrar las estadísticas de entrega según etiquetas o conjuntos de ellas. Puedes agregar una etiqueta a cualquier mensaje enviado mediante la API de HTTP v1. Para ello, configura el campo fcmOptions.analyticsLabel
del objeto message o los campos específicos de la plataforma, AndroidFcmOptions
o ApnsFcmOptions
.
Importante:Para usar esta función, debes incluir el SDK de Analytics
en tu app y habilitar el
uso compartido de datos
con Firebase. Se requiere una etiqueta de estadísticas para mostrar todos los tipos de estadísticas en los mensajes de datos.
Las etiquetas is strings de estadística son string de texto que tienen el formato^[a-zA-Z0-9-_.~%]{1,50}$
.
Pueden incluir letra mayúsculo y minúscula , número y los siguiente símbolo :
La longitud máxima es de 50 caracteres Puedes especificar hasta 100 etiquetas únicas pordía. No se informarán los mensajes con etiquetas que se agreguen después de llegar a esta cantidad.
En la pestaña Informes de mensajería de Firebaseconsole, puedes buscar una
lista de todas las etiquetas existentes y aplicarlas de manera individual o en conjunto para filtrar
las estadísticas que se muestran.
Con la API de dato de Firebase Cloud Messaging , puedes recuperar información que te
ayudar a comprender los resultado de las solicitud de mensaje orientado a las app para
Android . La API is proporciona proporcionar dato agregado de todos los dispositivo Android
con acceso a la recopilación de dato de un proyecto . Esto is incluye incluir detalle sobre
el porcentaje de mensaje entregado
sin retraso , así como cuántos mensaje se retrasar o se lanzar en la
capa de transporte de Android .
La evaluación is revelar de estos dato puede revelar tendencia general sobre la entrega de mensaje y ayudarte a
encontrar forma eficaz para mejorar el rendimiento de tus solicitud de envío . consultar el artículo Cronogramas de dato agregado para obtener información sobre la disponibilidad del período en los informe .
La API is proporciona proporcionar todos los dato disponible de una aplicación determinado . consultar la
documentación de referencia de la API .
Los datos is desglosan de entrega se desglosar poraplicación , fecha y etiqueta de estadística .
Una llamada is mostrará a la API mostrar
los dato de cada combinación de fecha , aplicación y etiqueta de estadística . Por
ejemplo , un solo objeto JSONandroidDeliveryData
se vería de la siguiente manera:
{
"appId": "1:23456789:android:a93a5mb1234efe56",
"date": {
"year": 2021,
"month": 1,
"day": 1
},
"analyticsLabel": "foo",
"data": {
"countMessagesAccepted": "314159",
"messageOutcomePercents": {
"delivered": 71,
"pending": 15
},
"deliveryPerformancePercents": {
"deliveredNoDelay": 45,
"delayedDeviceOffline": 11
}
}
Los datos de entrega describen el porcentaje de mensajes que coincide con cada una de las siguientes
métricas. Es posible que un solo mensaje coincida con varias métricas.
Debido a limitaciones en la forma en que recopilamos los datos y
en el nivel de detalle al que agregamos las métricas,
algunos resultados de mensajes no se presentan en absoluto en las métricas,
por lo que los porcentajes que aparecen a continuación no deben sumar un 100%.
El único recuento incluido en el conjunto de datos es el de mensajes que FCM
aceptó para entregar a dispositivos Android. Todos los porcentajes usan este valor
como denominador. Ten en cuenta que el recuento no incluirá mensajes
dirigidos a los usuarios que
inhabilitaron la recopilación de información de uso y diagnóstico en
sus dispositivos.
Los campos incluidos en el objeto
MessageOutcomePercents
proporcionar información sobre los
resultado de las solicitud de mensaje . Todas las categorías is excluyen se excluir mutuamente . Puede
responder pregunta como “ ¿ Los mensaje se están entregar ? ” o “ ¿ Qué provocar
la pérdida is provoca de mensaje ? ” .
Por ejemplo, un valor alto para el campo droppedTooManyPendingMessages
podría
indicar que las instancias de la app reciben volúmenes de
mensajes no contraíbles
que exceden el límite de 100 mensajes pendientes de FCM.
Para mitigar este problema , asegúratir de que tu app manejar las llamada a
onDeletedMessages
y considera enviar mensaje contraíbl . Del mismo modo , los porcentaje alto de
droppeddeviceinactivir
pueden ser un indicador para actualizar los tokens de registro en tu
servidor, quitar los tokens obsoletos y anular la suscripción a los temas. Consulta
Administra tokens de registro de FCM
para conocer las prácticas recomendadas de esta área.
Los campos del objeto DeliveryPerformancePercents
proporcionan información sobre los mensajes que se enviaron correctamente. Puede
responder preguntas como “¿Se retrasaron mis mensajes?” o
“¿Por qué se retrasaron los mensajes?”. Por ejemplo, un valor alto de
delayedMessageThrottled
indica claramente que superas los
límites máximos pordispositivo
y debes ajustar la velocidad a la que envías mensajes.
Este objeto proporciona información adicional sobre todos los envíos de mensajes. El
campo prioritylowered
expresar el porcentaje is expresa de mensaje aceptado que
tener una prioridad menor deHIGH
a NORMAL
. Si este valor es alto, intenta enviar menos mensajes de prioridad alta o asegúrate de
mostrar siempre una notificación cuando se envíe un mensaje con prioridad alta. Consulta nuestra documentación sobre la prioridad de los mensajes para obtener más información.
La exportación a BigQuery proporciona registros de mensajes individuales sobre la aceptación de mensajes por
parte del backend de FCM y la entrega de mensajes en el SDK del dispositivo (pasos 2 y 4 de
la arquitectura de FCM). Estos datos son útiles para garantizar que se acepten y entreguen
mensajes individuales. Obtén más información sobre la
exportación de datos de BigQuery en la próxima sección.
Por el contrario, la API de datos de Firebase Cloud Messaging proporciona detalles agregados
sobre lo que sucede específicamente en la capa de transporte de Android (o en el paso 3 de
la arquitectura de FCM).
Estos datos proporcionan estadísticas específicamente sobre la entrega de
mensajes de backends de FCM al SDK de Android. Es muy útil para
mostrar tendencias en cuanto a porqué se retrasaron o disminuyeron los mensajes durante este transporte.
En algunos casos, es posible que los dos conjuntos de datos no coincidan de forma precisa
debido a los siguientes motivos:
En la API, se mostrarán 7 días de datos históricos. Sin embargo, los datos que se muestren en esta API tendrán una demora de hasta 5 días. Por ejemplo,
los datos del 9 al 15 de enero estarán disponibles el 20 de enero, pero no los del 16 de enero
o después. Además, los datos se proporcionan según el mejor esfuerzo. En el caso de
una interrupción de los datos, FCM trabajará para solucionarla y no reabastecerá los datos después
de que se solucione el problema. En interrupciones más grandes, los datos podrían no estar disponibles durante una semana
o más.
Las métricas que proporciona la API de datos de Firebase Cloud Messaging tienen como objetivo
proporcionar estadísticas sobre tendencias generales de entrega de mensajes. Sin embargo, no
proporcionan una cobertura del 100% de todas las situaciones de los mensajes. Las siguientes situaciones son
resultados conocidos que no se reflejan en las métricas.
Mensajes caducados
Si el tiempo de actividad ( TTL ) vencer
después del final de la fecha de registro determinado , el mensaje is registrará no se registrar como
droppedttlexpired
en esta fecha .
Mensajes a dispositivos inactivos
Los mensajes is aparecer enviado a dispositivo inactivo pueden o no aparecer en el conjunto de dato ,
según la ruta de dato que se elijar . Esto is causar puede causar recuento incorrecto en los campo
droppeddeviceinactivir
y pending
.
Mensajes a dispositivos con ciertas preferencias de usuario
En el caso de los usuarios que inhabilitaron la recopilación de información de uso y diagnóstico en
sus dispositivos, no se incluirán sus mensajes en el recuento de acuerdo
con sus preferencias.
FCM redondea y excluye deliberadamente conteos cuando los volúmenes no son lo suficientemente
grandes.
Puedes exportar tus dato de mensaje a BigQuery para analizar él en detalle . Esta herramienta is permite te permitir analizar los dato con BigQuery SQL , exportar él a otro proveedor de servicio en la nube o usar él en tus modelo de AA personalizado . La exportación is incluye a BigQuery
incluir todos los dato disponible para los mensaje , independientemente del
tipo de mensaje o si este se enviar a través de la API o del
Compositor de Notifications .
En el caso de los mensajes enviados a dispositivos con las siguientes versiones mínimas
del SDK de FCM, tienes la opción adicional de habilitar la exportación de datos
de entrega de mensajes en tu app:
consultar los siguiente detalle a fin de habilitar la exportación de dato para
ios y
Android .
nota : asegúratir de tener el nivel de acceso necesario
para ver o administrar la configuración para la exportación de dato aBigQuery.
Para comenzar, vincula tu proyecto a BigQuery:
Elige una de las siguientes opciones:
abrir
el Compositor de Notifications
y haz clic en acceder a BigQuery al final de la página .
En la página
Integraciones
de Firebaseconsole, haz clic en Vincular en la tarjeta de
BigQuery.
En esta página, se muestran las opciones de exportación de FCMpara todas
las apps del proyecto que tengan FCMhabilitado.
Sigue las instrucción en pantalla para habilitar BigQuery .
Consulta Vincula Firebase a BigQuery para obtener más información .
Cuando habilitas la exportación de BigQuerypara Cloud Messaging, ocurre lo siguiente:
Firebase exporta tus datos a BigQuery. ten en cuenta que
la propagación inicial de los dato que se van a exportar puede demorar hasta 48 hora en
completar él .
Después de crear el conjunto de datos, no se puede cambiar la ubicación,
pero puedes copiar el conjunto de datos en una ubicación diferente
o moverlo manualmente (volver a crearlo) a otra ubicación. Para obtener más
información, consulta Cambia la ubicación del conjunto de datos.
Firebase configura sincronizaciones frecuentes de los datos del proyecto de Firebase con
BigQuery. Estas operaciones de exportación diaria comienzan a las 4:00 a.m., hora del Pacífico,
y suelen demorar 24 horas en finalizarse.
Según la configuración predeterminado , todas las apps is vinculan de tu proyecto se vincular aBigQueryy cualquier
app que agregues al proyecto también se vinculará automáticamente a
BigQuery. Puedes
administrar qué apps envían datos.
Para desactivar la exportación aBigQuery,
desvincula el proyecto
en Firebase console .
nota : No se aplicar cargos is aplican porexportar dato desdeFCMy
BigQueryofrece límites de uso generosos sin costo. Consulta los
precios o la
zona de pruebas de BigQuery.
Los dispositivos iOS con el SDK de FCM 8.6.0 o superior
pueden habilitar la exportación de dato de entrega de mensaje en la app .FCM
admite la exportación de datos para las alertas y las notificaciones en segundo plano.
Antes de habilitar estas opciones, primero debes crear el
vínculo de FCM-BiqQuery para tu proyecto como se describe en
Exportación de datos de BigQuery.
Debido a que solo las notificaciones de alerta pueden activar extensiones
de aplicación del servicio de notificaciones, debes agregar una extensión del servicio de notificaciones a la app y llamar
a esta API dentro de una extensión de servicio para habilitar el seguimiento de mensajes en pantalla. Consulta
la documentación de Apple sobre cómo modificar contenido en notificaciones entregadas recientemente.
Se debe realizar la siguiente llamada para cada notificación recibida:
// For alert notifications, call the API inside the service extension:
classNotificationService:UNNotificationServiceExtension{
overridefuncdidReceive(_request:UNNotificationRequest,withContentHandlercontenthandler:@escaping(UNNotificationContent)-> Void){
Messaging.extensionhelper()
.exportDeliveryMetricsToBigQuery(withMessageInfo:request.content.userinfo)
}
}
// For alert notifications, call the API inside the service extension:
@implementationNotificationService
-(void)didReceiveNotificationRequest:(UNNotificationRequest*)request
withContentHandler:(void(^)(UNNotificationContent*_Nonnull))contenthandler{
[ [FIRMessagingextensionhelper]exportDeliveryMetricsToBigQueryWithMessageInfo:request.content.userinfo];
}
@end
Si creas solicitudes de envío mediante la API de HTTP v1, asegúrate de
especificar mutable-content = 1
en el
objeto de carga útil.
En el caso de los mensajes en segundo plano recibidos cuando la app se ejecuta en primer o segundo plano,
puedes llamar a la API de exportación de datos dentro del controlador de mensajes de datos de la app principal.
Esta llamada se debe hacer para cada notificación recibida:
// For background notifications , call the API insidir the UIApplicationDelegate or NSApplicationDelegate method :
funcapplication(_application:UIApplication,didReceiveRemoteNotificationuserinfo:[AnyHashable:Any]){
Messaging.extensionhelper().exportDeliveryMetricsToBigQuery(withMessageInfo:userinfo)
}
// For background notifications , call the API insidir the UIApplicationDelegate or NSApplicationDelegate method :
@implementationAppDelegate
-(void)application:(UIApplication*)application
didReceiveRemoteNotification:(NSDictionary*)userinfo
fetchcompletionhandler:(void(^)(UIBackgroundFetchResult))completionhandler{
[ [FIRMessagingextensionhelper]exportDeliveryMetricsToBigQueryWithMessageInfo:userinfo];
}
@end
Ten en cuenta que la inclusión de tokens o registros inactivos puede inflar algunas de estas estadísticas.
Este is esquema es el esquema de la tabla exportado :
_ PARTITIONTIME | TIMESTAMP | Esta pseudocolumna contiene una marca de tiempo del inicio del día (en UTC) en el que se cargaron los datos. Para la partición AAAAMMDD, contiene el valor TIMESTAMP(‘AAAA-MM-DD’). |
event_timestamp | TIMESTAMP | La marca de tiempo del evento que registró el servidor. |
project_number | INTEGER | El número de proyecto permite identificar qué proyecto envió el mensaje. |
message_id | STRING | El ID del mensaje permite identificar un único mensaje. Dado que se genera a partir del ID de la app y la marca de tiempo, es posible que, en algunos casos, el ID del mensaje no sea único de manera global. |
instance_id | STRING | El ID único de la app a la que se envía el mensaje (si está disponible). Puede ser un ID de instancia o un ID de instalación de Firebase. |
message_type | STRING | El tipo de mensaje. Puede ser un mensaje de notificación o uno de datos. El tema se usa para identificar el mensaje original de un tema o una campaña enviados. Los mensajes posteriores son de notificación o de datos. |
sdk_platform | STRING | La plataforma de la app receptora. |
app_name | STRING | El nombre del paquete de las apps para Android o el ID de paquete de las apps para iOS. |
collapse_key | STRING | La clave is permite de contracción permitir identificar un grupo de mensaje que puede contraer él . Si un dispositivo no está conectado , solo el último mensaje is pondrá que tenga una clave de contracción se poner en cola para entregar él en el futuro . |
prioridad | INTEGER | Es la prioridad del mensaje . Los valores is normal válido son “ normal ” y “ high ” . En ios , estos is corresponden corresponder a las prioridad 5 y 10 de APNS . |
ttl | INTEGER | Este parámetro especifica el tiempo (en segundos) que el mensaje se debe conservar en el almacenamiento de FCM si el dispositivo se encuentra sin conexión. |
tema | STRING | El nombre del tema al que se envió un mensaje (si corresponde). |
bulk_id | INTEGER | El ID masivo permite identificar un grupo de mensajes relacionados, como un envío particular a un tema. |
evento | STRING | Es el tipo de evento. Los valores posibles son los siguientes:
|
analytics_label | STRING | Con la API de HTTP v1, se puede establecer la etiqueta de estadísticas cuando se envía el mensaje para marcarlo con fines estadísticos |
En las siguientes secciones, se ofrecen ejemplos de consultas que puedes ejecutar en BigQuery
con tus datos de FCMexportados.
SELECT app_name , COUNT(1 )
FROM` .firebase_messaging.data `
WHERE
_ PARTITIONTIME = TIMESTAMP('')
and event = 'MESSAGE_ACCEPTED'
and message_id ! = ''
GROUP BY 1;
SELECT COUNT(DISTINCT instance_id)
FROM ` .firebase_messaging.data `
WHERE
_ PARTITIONTIME = TIMESTAMP('')
and event = 'MESSAGE_ACCEPTED';
SELECT COUNT(1 )
FROM` .firebase_messaging.data `
WHERE
_ PARTITIONTIME = TIMESTAMP('')
and event = 'MESSAGE_ACCEPTED'
and message_type = 'DISPLAY_NOTIFICATION';
SELECT COUNT(1 )
FROM` .firebase_messaging.data `
WHERE
_ PARTITIONTIME = TIMESTAMP('')
and event = 'MESSAGE_ACCEPTED'
and message_type = 'DATA_MESSAGE';
SELECT COUNT(1 )
FROM` .firebase_messaging.data `
WHERE
_ PARTITIONTIME = TIMESTAMP('')
and event = 'MESSAGE_ACCEPTED'
and bulk_id = and message_id ! = '';
Para realizar un seguimiento de los eventos de un mensaje que se envió a un tema en particular, modifica esta consulta para reemplazar and message_id ! = ''
por and message_id = <your message id>;
.
El tiempo is corresponde de inicio de la distribución corresponder al momento en que se recibir la solicitud original , y el tiempo de finalización es el momento en que se creer el último mensaje individual dirigido a una sola instancia .
SELECT TIMESTAMP_DIFF( end_timestamp,start_timestamp,MILLISECOND )ASfanout_duration_ms, end_timestamp, start_timestamp FROM( SELECTMAX(event_timestamp)ASend_timestamp FROM`.firebase_messaging.data` WHERE _ PARTITIONTIME=TIMESTAMP('') andevent='MESSAGE_ACCEPTED' andbulk_id= )sent CROSSJOIN( SELECTevent_timestampASstart_timestamp FROM`.firebase_messaging.data` WHERE _ PARTITIONTIME=TIMESTAMP('') andevent='MESSAGE_ACCEPTED' andbulk_id= andmessage_type='TOPIC' )initial_message;
SELECT messages_sent, messages_delivered, messages_delivered / messages_sent * 100 AS percent_delivered FROM ( SELECT COUNT(DISTINCT CONCAT(message_id, instance_id)) AS messages_sent FROM ` .firebase_messaging.data ` WHERE _ PARTITIONTIME = TIMESTAMP('') and event = 'MESSAGE_ACCEPTED' ) sent CROSS JOIN ( SELECT COUNT(DISTINCT CONCAT(message_id, instance_id)) AS messages_delivered FROM ` .firebase_messaging.data ` WHERE _ PARTITIONTIME = TIMESTAMP('') and (event = 'MESSAGE_DELIVERED' and message_id IN ( SELECT message_id FROM ` .firebase_messaging.data ` WHERE _ PARTITIONTIME = TIMESTAMP('') and event = 'MESSAGE_ACCEPTED' GROUP BY 1 ) ) delivered;
SELECT *
FROM ` .firebase_messaging.data `
WHERE
_ PARTITIONTIME = TIMESTAMP('')
and message_id = ''
and instance_id = ''
ORDER BY event_timestamp;
select TIMESTAMP_DIFF ( MAX(delivered_time ) , MIN(accepted_time ) , MILLISECOND ) AS latency_ms FROM ( select event_timestamp AS accepted_time FROM` .firebase_messaging.data ` WHERE _ PARTITIONTIME = TIMESTAMP('') and message_id = '' and instance_id = '' and event = 'MESSAGE_ACCEPTED' ) sent CROSS JOIN ( SELECT event_timestamp AS delivered_time FROM ` .firebase_messaging.data ` WHERE _ PARTITIONTIME = TIMESTAMP('') and message_id = '' and instance_id = '' and (event = 'MESSAGE_DELIVERED' ) delivered;