| Seleccionar plataforma: | iOS+ Android Web Flutter Unity |
En la consola de Firebase (DevOps y participación > panel de Crashlytics), puedes hacer clic en un problema para obtener un informe detallado del evento. Puedes personalizar esos informes y administrar la recopilación de telemetría para comprender mejor lo que sucede en tu app web:
- Informa excepciones controladas de manera programática
- Agrega claves personalizadas
- Cómo forzar el vaciado de los registros de telemetría para las rutinas de corta duración
- Configura la tasa de muestreo
- Inhabilita o habilita la recopilación de telemetría
Informa excepciones controladas de manera programática
Puedes registrar excepciones controladas de forma manual con recordError. Los límites de errores de tu framework capturan automáticamente los errores de enrutamiento
y las excepciones no detectadas.
A continuación, se muestra cómo hacer un seguimiento de la prevalencia de fallas y los atributos de diagnóstico en tus usuarios:
import { recordError, getCrashlytics } from '@firebase/crashlytics';
import { app } from './lib/firebase';
const crashlytics = getCrashlytics(app);
async function submitPaymentForm() {
try {
await api.processTransaction();
} catch (error) {
// Manually record handled exceptions with diagnostic context
recordError(crashlytics, error, {
userTier: 'Premium Gold',
checkoutStage: 'BillingAddressVerification',
transactionCode: 'tx_8412_err',
retryAttempts: 2
});
showFallbackBanner(error);
}
}
Agrega claves personalizadas
Las claves de metadatos personalizadas te ayudan a comprender el estado específico de la app o el flujo de trabajo del usuario que provocó una falla.
Puedes registrar las actividades del usuario, los estados de las sesiones y los detalles de diagnóstico directamente como
atributos personalizados de par clave-valor con el parámetro de metadatos opcional cuando llamas a
recordError:
import { recordError, getCrashlytics } from '@firebase/crashlytics';
import { app } from './lib/firebase'; // Shared initialization script
const crashlytics = getCrashlytics(app);
// Pass custom key-value diagnostic metadata within recordError
recordError(crashlytics, error, {
userTier: 'Premium Gold',
checkoutStage: 'BillingAddressVerification',
transactionCode: 'tx_8412_err',
retryAttempts: 2,
breadcrumb: 'User opened shopping cart',
lastAction: 'Click Checkout Button'
});
Estos atributos personalizados se conservan en el informe de excepciones y aparecen en la pestaña Claves de la vista de problemas del panel de Crashlytics.
Fuerza la eliminación de los registros de telemetría
De forma predeterminada, el motor de telemetría web agrupa los registros en segmentos de memoria para preservar la duración de la batería, el rendimiento de la CPU y el ancho de banda de la red. Sin embargo, en el caso de los entornos de ejecución de corta duración, los registros se deben subir inmediatamente antes de que se destruya el contexto de ejecución.
Puedes usar el comando asíncrono flush para enviar todos los errores en cola al
backend de inmediato:
import { recordError, flush, getCrashlytics } from '@firebase/crashlytics';
import { app } from './lib/firebase';
const crashlytics = getCrashlytics(app);
async function handleApplicationCrash(error: Error) {
// Capture the error with immediate priority
recordError(crashlytics, error, { priority: 'IMMEDIATE' });
// Force an immediate upload before the process terminates or reloads
await flush(crashlytics);
// Safe to terminate or refresh the current execution context
window.location.reload();
}
Configura la tasa de muestreo
Si tomas una muestra de una proporción de las sesiones de usuario para controlar el volumen y el costo de la telemetría, puedes configurar el muestreo con cualquiera de las siguientes opciones:
- Opción 1 (recomendada): Configura la tasa de muestreo en Firebase console
- Opción 2: Establece la tasa de muestreo con la API de Firebase Telemetry Admin
Opción 1 (recomendada): Configura la tasa de muestreo en Firebase console
En la consola de Firebase, ve al panel DevOps & Engagement > Crashlytics.
Selecciona tu app web en el selector desplegable que se encuentra en la parte superior de la página.
Haz clic en Configurar muestreo en la esquina superior derecha del panel.
Establece el porcentaje de la Tasa de muestreo (entre
0%y100%) para controlar el porcentaje de eventos y sesiones recopilados de los clientes.
Opción 2: Establece la tasa de muestreo con la API de Firebase Telemetry Admin
Puedes usar la API de Firebase Telemetry Admin
(firebasetelemetryadmin.googleapis.com/v1alpha) para administrar la configuración de recopilación de telemetría
de tus apps de Firebase.
Configura las siguientes variables obligatorias en tu terminal:
PROJECT_ID="PROJECT_ID" LOCATION="LOCATION" # for example, global APP_ID="FIREBASE_APP_ID" # for example, 1:1234567890:web:abcdef123456 TOKEN=$(gcloud auth application-default print-access-token)Busca tu CONFIG_NAME y, luego, configúralo como una variable en tu terminal:
La configuración de telemetría se administra con un recurso
Config, por lo que debes encontrar el CONFIG_NAME específico para tu app web.Enumera los parámetros de configuración de tu proyecto y fíltralos por tu FIREBASE_APP_ID. Las marcas
curl -Gy--data-urlencodegarantizan que la cadena de filtro AIP-160 esté codificada en URL de forma correcta:curl -G \ -H "Authorization: Bearer $TOKEN" \ --data-urlencode "filter=app_id=\"${APP_ID}\"" \ "https://firebasetelemetryadmin.googleapis.com/v1alpha/projects/${PROJECT_ID}/locations/${LOCATION}/configs"En la respuesta JSON, busca el campo
namede tu app (projects/PROJECT_ID/locations/LOCATION/configs/<CONFIG_ID>) y, luego, establécelo como tu variableCONFIG_NAME:CONFIG_NAME="CONFIG_NAME"
Establece la tasa de muestreo:
Para ajustar la tasa de muestreo, usa el método
PATCHpara actualizar el camposampling_rate. Debes especificarupdateMask=sampling_rateen los parámetros de consulta. La tasa de muestreo es un valor doble que representa el porcentaje de sesiones que se recopilarán (por ejemplo,0.25para el 25%):# Example: Set sampling rate to 25% curl -X PATCH \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d "{ \"sampling_rate\": 0.25, \"app_id\": \"${APP_ID}\" }" \ "https://firebasetelemetryadmin.googleapis.com/v1alpha/${CONFIG_NAME}?updateMask=sampling_rate"
Inhabilita o habilita la recopilación de telemetría
De forma predeterminada, la recopilación de telemetría se habilita cuando configuras Crashlytics
para tu app web. Si necesitas inhabilitar o volver a habilitar la recopilación de telemetría
de forma dinámica después de instalar el SDK de Crashlytics, puedes administrar
los endpoints de recopilación con la API de Admin de Firebase Telemetry
(firebasetelemetryadmin.googleapis.com/v1alpha).
Antes de inhabilitar o habilitar la telemetría, debes configurar las siguientes variables:
Configura las siguientes variables obligatorias en tu terminal:
PROJECT_ID="PROJECT_ID" LOCATION="LOCATION" # for example, global APP_ID="FIREBASE_APP_ID" # for example, 1:1234567890:web:abcdef123456 TOKEN=$(gcloud auth application-default print-access-token)Busca tu CONFIG_NAME y, luego, configúralo como una variable en tu terminal:
La configuración de telemetría se administra con un recurso
Config, por lo que debes encontrar el CONFIG_NAME específico para tu app web.Enumera los parámetros de configuración de tu proyecto y fíltralos por tu FIREBASE_APP_ID. Las marcas
curl -Gy--data-urlencodegarantizan que la cadena de filtro AIP-160 esté codificada en URL de forma correcta:curl -G \ -H "Authorization: Bearer $TOKEN" \ --data-urlencode "filter=app_id=\"${APP_ID}\"" \ "https://firebasetelemetryadmin.googleapis.com/v1alpha/projects/${PROJECT_ID}/locations/${LOCATION}/configs"En la respuesta JSON, busca el campo
namede tu app (projects/PROJECT_ID/locations/LOCATION/configs/<CONFIG_ID>) y, luego, establécelo como tu variableCONFIG_NAME:CONFIG_NAME="CONFIG_NAME"
Inhabilita la recopilación de telemetría
Usa el método personalizado :disable para inhabilitar la recopilación de telemetría:
curl -X POST \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{}' \
"https://firebasetelemetryadmin.googleapis.com/v1alpha/${CONFIG_NAME}:disable"
Vuelve a habilitar la recopilación de telemetría
Para volver a habilitar la recopilación de telemetría, llama al método :enable:
curl -X POST \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{}' \
"https://firebasetelemetryadmin.googleapis.com/v1alpha/${CONFIG_NAME}:enable"