Триггеры оповещений Firebase

Firebase предоставляет оповещения для широкого спектра событий управления проектами и приложениями. Вот несколько примеров событий, когда Firebase может отправлять вам оповещения такого типа:

  • Что касается Crashlytics, мы можем предупредить вас, если у вашего приложения резко увеличилось количество сбоев.
  • Для мониторинга производительности мы можем предупредить вас, если время запуска вашего приложения превысит настроенный вами порог.
  • Для распространения приложений мы можем предупредить вас, если один из ваших тестировщиков зарегистрирует новое устройство iOS.

В зависимости от оповещения и настроек, установленных участником проекта , Firebase отображает эти типы оповещений в консоли Firebase или отправляет их по электронной почте.

На этой странице описывается, как писать функции, обрабатывающие события предупреждений.

Как это работает?

Вы можете запускать функции в ответ на события предупреждений, создаваемые этими источниками:

В типичном жизненном цикле функция, запускаемая событием оповещения, делает следующее:

  1. Прослушивает/ждет отправки оповещений определенного типа из Firebase.
  2. Запускается при отправке предупреждения и получает полезные данные события, которые содержат конкретную информацию о событии.
  3. Вызывает код вашей функции для обработки полезной нагрузки события.

Активировать функцию при возникновении предупреждений

Используйте подпакет firebase-functions/v2/alerts чтобы написать функцию, которая обрабатывает события предупреждений. В следующих примерах для конкретных продуктов демонстрируется рабочий процесс, в котором функция использует веб-перехватчик для отправки сообщения в канал Discord, когда из Firebase отправляется предупреждение для этого продукта.

Обработка события оповещения Crashlytics

В следующем примере Crashlytics вы используете облачные функции для Firebase для обработки оповещения о новой фатальной проблеме сбоя. Эта функция публикует информацию о предупреждении в сообщении на канал Discord.

Пример уведомления о сбое в 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 .