获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

Auslöser für Firebase-Warnungen

Firebase bietet Warnungen für eine Vielzahl von Projekt- und App-Verwaltungsereignissen. Hier sind einige Beispielereignisse, wenn Firebase Ihnen diese Art von Benachrichtigung senden kann:

  • Für Crashlytics können wir Sie benachrichtigen, wenn Ihre App einen dramatischen Anstieg der Abstürze aufweist.
  • Zur Leistungsüberwachung können wir Sie benachrichtigen, wenn die Startzeit Ihrer App Ihren konfigurierten Schwellenwert überschreitet.
  • Für die App-Verteilung können wir Sie benachrichtigen, wenn einer Ihrer Tester ein neues iOS-Gerät registriert.

Abhängig von der Warnung und den vom Projektmitglied festgelegten Einstellungen zeigt Firebase diese Arten von Warnungen in der Firebase-Konsole an oder sendet sie per E-Mail.

Auf dieser Seite wird beschrieben, wie Sie Funktionen schreiben, die Alarmereignisse verarbeiten.

Wie funktioniert es?

Sie können Funktionen als Reaktion auf Alarmereignisse auslösen, die von diesen Quellen ausgegeben werden:

In einem typischen Lebenszyklus führt eine durch ein Warnereignis ausgelöste Funktion Folgendes aus:

  1. Lauscht/wartet darauf, dass ein bestimmter Warnungstyp von Firebase ausgegeben wird.
  2. Wird ausgelöst, wenn die Warnung ausgegeben wird, und empfängt die Ereignisnutzlast, die spezifische Informationen über das Ereignis enthält.
  3. Ruft den Code Ihrer Funktion auf, um die Ereignisnutzlast zu verarbeiten.

Lösen Sie eine Funktion bei Alarmereignissen aus

Verwenden Sie das Unterpaket firebase-functions/v2/alerts um eine Funktion zu schreiben, die Warnungsereignisse verarbeitet. Die folgenden produktspezifischen Beispiele veranschaulichen einen Workflow, bei dem eine Funktion einen Webhook verwendet, um eine Nachricht an einen Discord-Kanal zu senden, wenn eine Warnung für dieses Produkt von Firebase ausgegeben wird.

Behandeln Sie ein Crashlytics-Warnungsereignis

Für das folgende Crashlytics-Beispiel verwenden Sie Cloud Functions for Firebase, um ein Warnereignis eines neuen schwerwiegenden Absturzproblems zu verarbeiten. Diese Funktion sendet die Alarminformationen in einer Nachricht an einen Discord-Kanal.

Beispiel für eine Absturzbenachrichtigung in Discord

Beispielbenachrichtigung für ein neues schwerwiegendes Absturzproblem

Die Funktion lauscht auf das Ereignis onNewFatalIssuePublished :

exports.postfatalissuetodiscord = onNewFatalIssuePublished(async (event) => {

Die Funktion analysiert dann das zurückgegebene Ereignisobjekt und erstellt eine Nachricht, die an den Discord-Kanal gesendet wird:

  // 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}\`
`;

Schließlich sendet die Funktion die konstruierte Nachricht an 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);
    }

Informationen zu allen Crashlytics-Warnungsereignissen, die Sie erfassen können, finden Sie in der Referenzdokumentation für Crashlytics-Warnungen .

Behandeln Sie ein Warnungsereignis der Leistungsüberwachung

Das Beispiel in diesem Abschnitt zeigt Ihnen, wie Sie eine Funktion für Leistungsschwellenwertwarnungen schreiben.

In diesem Beispiel exportiert die Funktion onThresholdAlertPublished eine Cloud-Funktion, die auf Ereignisse des Typs PerformanceEvent<ThresholdAlertPayload> lauscht, die jedes Mal gesendet werden, wenn eine Leistungsschwellenwertwarnung ausgelöst wird:

exports.postperformancealerttodiscord = onThresholdAlertPublished(
    async (event) => {

Die Funktion analysiert dann das zurückgegebene Ereignisobjekt, analysiert nützliche Informationen aus der Ereignisnutzlast und erstellt eine Nachricht, die an den Discord-Kanal gesendet wird:

      // 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}
    `;

Schließlich sendet die Funktion die konstruierte Nachricht über eine HTTP-Anforderung an Discord:

        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);
        }

Informationen zu allen Leistungswarnungsereignissen, die Sie erfassen können, finden Sie in der Referenzdokumentation für Leistungsüberwachungswarnungen .

Behandeln Sie ein App Distribution-Warnereignis

Das Beispiel in diesem Abschnitt zeigt Ihnen, wie Sie eine Funktion für neue Tester-iOS-Gerätewarnungen schreiben.

In diesem Beispiel exportiert die Funktion onNewTesterIosDevicePublished eine Cloud-Funktion, die auf Ereignisse des Typs AppDistributionEvent<NewTesterDevicePayload> lauscht, die jedes Mal gesendet werden, wenn ein Tester ein neues iOS-Gerät registriert. Wenn ein neues iOS-Gerät registriert wird, müssen Sie Ihr Bereitstellungsprofil mit der UDID dieses Geräts aktualisieren und die App dann neu verteilen.

exports.postnewduuidtodiscord = onNewTesterIosDevicePublished(async (event) => {

Die Funktion analysiert dann die zurückgegebenen, nützlichen Informationen aus der Ereignisnutzlast und erstellt eine Nachricht, die an den Discord-Kanal gesendet wird:

  // 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}
`;

Schließlich sendet die Funktion die konstruierte Nachricht über eine HTTP-Anforderung an Discord:

    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);
    }

Um mehr über alle App-Verteilungswarnungsereignisse zu erfahren, die Sie erfassen können, gehen Sie zur Referenzdokumentation für App-Verteilungswarnungen .