Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

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

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

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

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

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

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

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

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

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

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

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

Используйте подпакет firebase 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);
    }

Чтобы узнать обо всех событиях оповещений о распространении приложений, которые вы можете зафиксировать, перейдите к справочной документации по оповещениям о распространении приложений .