Firebase предоставляет оповещения для широкого спектра событий управления проектами и приложениями. Вот несколько примеров событий, когда Firebase может отправлять вам оповещения такого типа:
- Что касается Crashlytics, мы можем предупредить вас, если у вашего приложения резко увеличилось количество сбоев.
- Для мониторинга производительности мы можем предупредить вас, если время запуска вашего приложения превысит настроенный вами порог.
- Для распространения приложений мы можем предупредить вас, если один из ваших тестировщиков зарегистрирует новое устройство iOS.
В зависимости от оповещения и настроек, установленных участником проекта , Firebase отображает эти типы оповещений в консоли Firebase или отправляет их по электронной почте.
На этой странице описывается, как писать функции, обрабатывающие события предупреждений.
Как это работает?
Вы можете запускать функции в ответ на события предупреждений, создаваемые этими источниками:
- Обработка события оповещения о распространении приложений
- Обработка события оповещения Crashlytics
- Обработка события оповещения мониторинга производительности
В типичном жизненном цикле функция, запускаемая событием оповещения, делает следующее:
- Прослушивает/ждет отправки оповещений определенного типа из Firebase.
- Запускается при отправке предупреждения и получает полезные данные события, которые содержат конкретную информацию о событии.
- Вызывает код вашей функции для обработки полезной нагрузки события.
Активировать функцию при возникновении предупреждений
Используйте подпакет firebase-functions/v2/alerts
чтобы написать функцию, которая обрабатывает события предупреждений. В следующих примерах для конкретных продуктов демонстрируется рабочий процесс, в котором функция использует веб-перехватчик для отправки сообщения в канал Discord, когда из Firebase отправляется предупреждение для этого продукта.
Обработка события оповещения Crashlytics
В следующем примере Crashlytics вы используете облачные функции для Firebase для обработки оповещения о новой фатальной проблеме сбоя. Эта функция публикует информацию о предупреждении в сообщении на канал Discord.
Функция прослушивает событие onNewFatalIssuePublished
:
exports.postfatalissuetodiscord = onNewFatalIssuePublished(async (event) => {
Затем функция анализирует возвращенный объект события, создавая сообщение для публикации в канале Discord:
// construct a helpful message to send to Discord const appId = event.appId; const {id, title, subtitle, appVersion} = event.data.payload.issue; const message = ` 🚨 New fatal issue for ${appId} in version ${appVersion} 🚨 **${title}** ${subtitle} id: \`${id}\` `;
Наконец, функция отправляет построенное сообщение в Discord:
const response = await postMessageToDiscord("Crashlytics Bot", message); if (response.ok) { logger.info( `Posted fatal Crashlytics alert ${id} for ${appId} to Discord`, event.data.payload, ); } else { throw new Error(response.error); }
Чтобы узнать обо всех событиях предупреждений Crashlytics, которые вы можете зафиксировать, перейдите к справочной документации по предупреждениям Crashlytics .
Обработка события оповещения мониторинга производительности
Пример в этом разделе показывает, как написать функцию для оповещений о пороге производительности.
В этом примере функция onThresholdAlertPublished
экспортирует облачную функцию, которая прослушивает события типа PerformanceEvent<ThresholdAlertPayload>
, которые отправляются каждый раз, когда срабатывает предупреждение о пороге производительности:
exports.postperformancealerttodiscord = onThresholdAlertPublished( async (event) => {
Затем функция анализирует возвращенный объект события, анализируя полезную информацию из полезной нагрузки события и создавая сообщение для публикации в канале Discord:
// construct a helpful message to send to Discord const appId = event.appId; const { eventName, metricType, eventType, numSamples, thresholdValue, thresholdUnit, conditionPercentile, appVersion, violationValue, violationUnit, investigateUri, } = event.data.payload; const message = ` ⚠️ Performance Alert for ${metricType} of ${eventType}: **${eventName}** ⚠️ App id: ${appId} Alert condition: ${thresholdValue} ${thresholdUnit} Percentile (if applicable): ${conditionPercentile} App version (if applicable): ${appVersion} Violation: ${violationValue} ${violationUnit} Number of samples checked: ${numSamples} **Investigate more:** ${investigateUri} `;
Наконец, функция отправляет сконструированное сообщение в Discord через HTTP-запрос:
const response = await postMessageToDiscord( "Firebase Performance Bot", message); if (response.ok) { logger.info( `Posted Firebase Performance alert ${eventName} to Discord`, event.data.payload, ); } else { throw new Error(response.error); }
Чтобы узнать обо всех событиях предупреждений о производительности, которые вы можете зафиксировать, перейдите к справочной документации по предупреждениям мониторинга производительности .
Обработка события оповещения о распространении приложений
В примере в этом разделе показано, как написать функцию для оповещений о новых тестировщиках устройств iOS.
В этом примере функция onNewTesterIosDevicePublished
экспортирует облачную функцию, которая прослушивает события типа AppDistributionEvent<NewTesterDevicePayload>
, которые отправляются каждый раз, когда тестировщик регистрирует новое устройство iOS. Когда зарегистрировано новое устройство iOS, вам необходимо обновить свой профиль подготовки с помощью UDID этого устройства, а затем повторно распространить приложение.
exports.postnewduuidtodiscord = onNewTesterIosDevicePublished(async (event) => {
Затем функция анализирует возвращенные данные, анализируя полезную информацию из полезной нагрузки события и создавая сообщение для публикации в канале Discord:
// construct a helpful message to send to Discord const appId = event.appId; const { testerDeviceIdentifier, testerDeviceModelName, testerEmail, testerName, } = event.data.payload; const message = ` 📱 New iOS device registered by ${testerName} <${testerEmail}> for ${appId} UDID **${testerDeviceIdentifier}** for ${testerDeviceModelName} `;
Наконец, функция отправляет сконструированное сообщение в Discord через HTTP-запрос:
const response = await postMessageToDiscord("AppDistribution Bot", message); if (response.ok) { logger.info( `Posted iOS device registration alert for ${testerEmail} to Discord`, ); } else { throw new Error(response.error); }
Чтобы узнать обо всех событиях оповещений о распространении приложений, которые вы можете зафиксировать, перейдите к справочной документации по оповещениям о распространении приложений .
Чтобы узнать, как использовать функцию, активируемую оповещением Firebase об отзыве в приложении от App Distribution , см . раздел Отправка отзыва о приложении в Jira .