Wyzwalacze alertów Firebase

Firebase zapewnia alerty dotyczące szerokiego zakresu zdarzeń związanych z zarządzaniem projektami i aplikacjami. Oto kilka przykładowych zdarzeń, kiedy Firebase może wysłać Ci alert tego typu:

  • W przypadku Crashlytics możemy Cię ostrzec, jeśli Twoja aplikacja odnotuje gwałtowny wzrost liczby awarii.
  • W przypadku monitorowania wydajności możemy Cię ostrzec, jeśli czas uruchomienia Twojej aplikacji przekroczy skonfigurowany próg.
  • W przypadku dystrybucji aplikacji możemy Cię powiadomić, jeśli jeden z Twoich testerów zarejestruje nowe urządzenie z systemem iOS.

W zależności od alertu i preferencji ustawionych przez członka projektu , Firebase wyświetla tego typu alerty w konsoli Firebase lub wysyła je e-mailem.

Na tej stronie opisano sposób pisania funkcji obsługujących zdarzenia alertów.

Jak to działa?

Możesz wyzwalać funkcje w odpowiedzi na zdarzenia alertów emitowane przez te źródła:

W typowym cyklu życia funkcja wyzwalana przez zdarzenie alertu wykonuje następujące czynności:

  1. Nasłuchuje/czeka na wyemitowanie określonego typu alertu z Firebase.
  2. Wyzwala się, gdy alert jest emitowany i odbiera ładunek zdarzenia, który zawiera określone informacje o zdarzeniu.
  3. Wywołuje kod Twojej funkcji, aby obsłużyć ładunek zdarzenia.

Wyzwalaj funkcję w przypadku zdarzeń alertu

Użyj podpakietu firebase-functions/v2/alerts aby napisać funkcję obsługującą zdarzenia alertów. Poniższe przykłady dotyczące konkretnych produktów przedstawiają przepływ pracy, w którym funkcja używa webhooka do publikowania wiadomości na kanale Discord, gdy alert dotyczący tego produktu jest emitowany z Firebase.

Obsługuj zdarzenie alertu Crashlytics

W poniższym przykładzie Crashlytics używasz Cloud Functions for Firebase do obsługi zdarzenia alertu dotyczącego nowego krytycznego problemu z awarią. Ta funkcja publikuje informacje o alercie w wiadomości na kanale Discord.

Przykładowe powiadomienie o awarii w Discord

Przykładowe powiadomienie o nowej krytycznej awarii

Funkcja nasłuchuje zdarzenia onNewFatalIssuePublished :

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

Następnie funkcja analizuje zwrócony obiekt zdarzenia, tworząc wiadomość do opublikowania na kanale 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}\`
`;

Na koniec funkcja wysyła skonstruowaną wiadomość do Discorda:

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

Aby dowiedzieć się więcej o wszystkich zdarzeniach alertów Crashlytics, które można rejestrować, przejdź do dokumentacji referencyjnej alertów Crashlytics .

Obsługuj zdarzenie alertu monitorowania wydajności

Przykład w tej sekcji pokazuje, jak napisać funkcję dla alertów progu wydajności.

W tym przykładzie funkcja onThresholdAlertPublished eksportuje funkcję chmurową, która nasłuchuje zdarzeń typu PerformanceEvent<ThresholdAlertPayload> , które są wysyłane za każdym razem, gdy uruchamiany jest alert dotyczący progu wydajności:

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

Następnie funkcja analizuje zwrócony obiekt zdarzenia, analizując przydatne informacje z ładunku zdarzenia i konstruując wiadomość do opublikowania na kanale 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}
    `;

Na koniec funkcja wysyła skonstruowaną wiadomość do Discord poprzez żądanie 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);
        }

Aby dowiedzieć się więcej o wszystkich zdarzeniach alertów dotyczących wydajności, które można przechwytywać, przejdź do dokumentacji referencyjnej dotyczącej alertów monitorowania wydajności .

Obsługuj zdarzenie alertu dystrybucji aplikacji

Przykład w tej sekcji pokazuje, jak napisać funkcję dla nowych alertów urządzenia z systemem iOS testera.

W tym przykładzie funkcja onNewTesterIosDevicePublished eksportuje funkcję chmury, która nasłuchuje zdarzeń typu AppDistributionEvent<NewTesterDevicePayload> , które są wysyłane za każdym razem, gdy tester rejestruje nowe urządzenie z systemem iOS. Po zarejestrowaniu nowego urządzenia z systemem iOS należy zaktualizować profil udostępniania za pomocą identyfikatora UDID tego urządzenia, a następnie ponownie rozpowszechnić aplikację.

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

Następnie funkcja analizuje zwrócone, analizując przydatne informacje z ładunku zdarzenia i konstruując wiadomość do opublikowania na kanale 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}
`;

Na koniec funkcja wysyła skonstruowaną wiadomość do Discord poprzez żądanie 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);
    }

Aby dowiedzieć się więcej o wszystkich zdarzeniach alertów związanych z dystrybucją aplikacji, które można przechwytywać, przejdź do dokumentacji referencyjnej dotyczącej alertów dotyczących dystrybucji aplikacji .

Aby dowiedzieć się, jak korzystać z funkcji uruchamianej przez alert Firebase z aplikacji App Distribution, który zawiera informacje zwrotne w aplikacji, zobacz Wysyłanie opinii w aplikacji do Jira .