| Выберите платформу: | iOS+ Android Web Flutter Unity |
В консоли Firebase (DevOps & Engagement (DevOps и взаимодействие) > панель управления Crashlytics) можно нажать на проблему и получить подробный отчет о событии. Вы можете настраивать эти отчеты и управлять сбором телеметрии, чтобы лучше понимать, что происходит в вашем веб-приложении.
- Как программно сообщать об обработанных исключениях
- Как добавить специальные ключи
- Принудительная отправка записей телеметрии для кратковременных процедур
- Как настроить частоту дискретизации
- Как включить или отключить сбор телеметрии
Как программно сообщать об обработанных исключениях
Вы можете вручную регистрировать обработанные исключения с помощью recordError. Ошибки маршрутизации и неперехваченные исключения автоматически фиксируются границами ошибок фреймворка.
Вот как отслеживать распространенность сбоев и диагностические атрибуты для пользователей:
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);
}
}
Как добавить специальные ключи
Специальные ключи метаданных помогают понять, в каком состоянии находилось приложение или какие действия выполнял пользователь перед сбоем.
Вы можете регистрировать действия пользователей, состояния сеансов и диагностические данные непосредственно в виде настраиваемых атрибутов "ключ-значение", используя необязательный параметр метаданных при вызове 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'
});
Эти настраиваемые атрибуты сохраняются в отчете об исключениях и отображаются на вкладке Keys (Ключи) в представлении проблем на панели управления Crashlytics.
Принудительная очистка записей телеметрии
По умолчанию система веб-телеметрии группирует журналы в сегменты памяти, чтобы экономить заряд батареи, производительность ЦП и пропускную способность сети. Однако в случае кратковременных сред выполнения журналы должны загружаться непосредственно перед уничтожением контекста выполнения.
Вы можете использовать асинхронную команду flush, чтобы немедленно отправить все ошибки из очереди в серверную часть:
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();
}
Как настроить частоту дискретизации
Если вы хотите контролировать объем и стоимость телеметрии, вы можете настроить выборку сеансов пользователей одним из следующих способов:
- Вариант 1 (рекомендуется). Настройте частоту дискретизации в консоли Firebase
- Вариант 2. Задайте частоту дискретизации с помощью Firebase Telemetry Admin API.
Вариант 1 (рекомендуется). Настройте частоту дискретизации в консоли Firebase.
В консоли Firebase перейдите в раздел DevOps & Engagement (DevOps и вовлечение) > Crashlytics dashboard (Панель управления ).
Выберите веб-приложение в раскрывающемся списке вверху страницы.
В правом верхнем углу панели нажмите Настроить выборку.
Задайте частоту дискретизации в процентах (от
0%до100%), чтобы контролировать процент событий и сеансов, собираемых от клиентов.
Вариант 2. Настройте частоту дискретизации с помощью Firebase Telemetry Admin API
Вы можете использовать Firebase Telemetry Admin API (firebasetelemetryadmin.googleapis.com/v1alpha), чтобы управлять настройками сбора телеметрии для приложений Firebase.
Настройте в терминале следующие обязательные переменные:
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)Найдите CONFIG_NAME и настройте его как переменную в терминале:
Настройки телеметрии управляются с помощью ресурса
Config, поэтому вам нужно найти определенный CONFIG_NAME для вашего веб-приложения.Получите список конфигураций в проекте и отфильтруйте их по FIREBASE_APP_ID. Флаги
curl -Gи--data-urlencodeобеспечивают правильное URL-кодирование строки фильтра AIP-160:curl -G \ -H "Authorization: Bearer $TOKEN" \ --data-urlencode "filter=app_id=\"${APP_ID}\"" \ "https://firebasetelemetryadmin.googleapis.com/v1alpha/projects/${PROJECT_ID}/locations/${LOCATION}/configs"В ответе JSON найдите поле
nameдля своего приложения (projects/PROJECT_ID/locations/LOCATION/configs/<CONFIG_ID>) и задайте его в качестве переменнойCONFIG_NAME:CONFIG_NAME="CONFIG_NAME"
Задайте частоту дискретизации:
Чтобы изменить частоту дискретизации, используйте метод
PATCHдля обновления поляsampling_rate. В параметрах запроса необходимо указатьupdateMask=sampling_rate. Частота дискретизации – это значение двойной точности, представляющее процент сеансов, которые нужно отслеживать (например,0.25для 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"
Как включить или отключить сбор телеметрии
По умолчанию сбор телеметрии включен, когда вы настраиваете Crashlytics для веб-приложения. Если вам нужно динамически отключить или повторно включить сбор телеметрии после установки SDK Crashlytics, вы можете управлять конечными точками сбора с помощью Firebase Telemetry Admin API (firebasetelemetryadmin.googleapis.com/v1alpha).
Прежде чем включать или отключать телеметрию, задайте следующие переменные:
Настройте в терминале следующие обязательные переменные:
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)Найдите CONFIG_NAME и настройте его как переменную в терминале:
Настройки телеметрии управляются с помощью ресурса
Config, поэтому вам нужно найти определенный CONFIG_NAME для вашего веб-приложения.Получите список конфигураций в проекте и отфильтруйте их по FIREBASE_APP_ID. Флаги
curl -Gи--data-urlencodeобеспечивают правильное URL-кодирование строки фильтра AIP-160:curl -G \ -H "Authorization: Bearer $TOKEN" \ --data-urlencode "filter=app_id=\"${APP_ID}\"" \ "https://firebasetelemetryadmin.googleapis.com/v1alpha/projects/${PROJECT_ID}/locations/${LOCATION}/configs"В ответе JSON найдите поле
nameдля своего приложения (projects/PROJECT_ID/locations/LOCATION/configs/<CONFIG_ID>) и задайте его в качестве переменнойCONFIG_NAME:CONFIG_NAME="CONFIG_NAME"
Отключить сбор телеметрии
Чтобы отключить сбор телеметрии, используйте специальный метод :disable:
curl -X POST \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{}' \
"https://firebasetelemetryadmin.googleapis.com/v1alpha/${CONFIG_NAME}:disable"
Как повторно включить сбор телеметрии
Чтобы снова включить сбор телеметрии, вызовите метод :enable:
curl -X POST \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{}' \
"https://firebasetelemetryadmin.googleapis.com/v1alpha/${CONFIG_NAME}:enable"