Si attivano gli avvisi di Firebase

Firebase fornisce avvisi per un'ampia gamma di eventi di gestione di progetti e app. Ecco alcuni esempi di eventi in cui Firebase può inviarti questo tipo di avviso:

  • Per Crashlytics, possiamo avvisarti se la tua app ha un notevole aumento degli arresti anomali.
  • Per il monitoraggio delle prestazioni, possiamo avvisarti se il tempo di avvio della tua app supera la soglia configurata.
  • Per App Distribution, possiamo avvisarti se uno dei tuoi tester registra un nuovo dispositivo iOS.

A seconda dell'avviso e delle preferenze impostate dal membro del progetto , Firebase mostra questi tipi di avvisi nella console Firebase o li invia tramite e-mail.

Questa pagina descrive come scrivere funzioni che gestiscono gli eventi di avviso.

Come funziona?

È possibile attivare le funzioni in risposta agli eventi di avviso emessi da queste fonti:

In un tipico ciclo di vita, una funzione attivata da un evento di avviso esegue le seguenti operazioni:

  1. Ascolta/attende che un tipo di avviso specifico venga emesso da Firebase.
  2. Si attiva quando viene emesso l'avviso e riceve il payload dell'evento che contiene informazioni specifiche sull'evento.
  3. Richiama il codice della tua funzione per gestire il payload dell'evento.

Attiva una funzione sugli eventi di avviso

Utilizza il pacchetto secondario firebase-functions/v2/alerts per scrivere una funzione che gestisca gli eventi di avviso. I seguenti esempi specifici del prodotto mostrano un flusso di lavoro in cui una funzione utilizza un webhook per pubblicare un messaggio su un canale Discord quando viene emesso un avviso per quel prodotto da Firebase.

Gestisci un evento di avviso di Crashlytics

Per il seguente esempio di Crashlytics, utilizzi Cloud Functions for Firebase per gestire un evento di avviso di un nuovo problema di arresto anomalo irreversibile. Questa funzione pubblica le informazioni di avviso in un messaggio su un canale Discord.

Esempio di notifica di arresto anomalo in Discord

Esempio di notifica per un nuovo problema di arresto anomalo irreversibile

La funzione ascolta l'evento onNewFatalIssuePublished :

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

La funzione quindi analizza l'oggetto evento restituito, costruendo un messaggio da pubblicare sul canale 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}\`
`;

Infine, la funzione invia il messaggio costruito a 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);
    }

Per informazioni su tutti gli eventi di avviso di Crashlytics che puoi acquisire, consulta la documentazione di riferimento per gli avvisi di Crashlytics .

Gestire un evento di avviso di monitoraggio delle prestazioni

L'esempio in questa sezione mostra come scrivere una funzione per gli avvisi di soglia delle prestazioni.

In questo esempio, la funzione onThresholdAlertPublished esporta una funzione cloud che ascolta gli eventi di tipo PerformanceEvent<ThresholdAlertPayload> , che viene inviato ogni volta che viene attivato un avviso di soglia delle prestazioni:

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

La funzione quindi analizza l'oggetto evento restituito, analizzando informazioni utili dal payload dell'evento e costruendo un messaggio da pubblicare sul canale 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}
    `;

Infine, la funzione invia il messaggio costruito a Discord tramite una richiesta 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);
        }

Per informazioni su tutti gli eventi di avviso sulle prestazioni che puoi acquisire, consulta la documentazione di riferimento per gli avvisi di monitoraggio delle prestazioni .

Gestire un evento di avviso di App Distribution

L'esempio in questa sezione mostra come scrivere una funzione per i nuovi avvisi del dispositivo iOS del tester.

In questo esempio, la funzione onNewTesterIosDevicePublished esporta una funzione cloud che ascolta eventi di tipo AppDistributionEvent<NewTesterDevicePayload> , che viene inviato ogni volta che un tester registra un nuovo dispositivo iOS. Quando viene registrato un nuovo dispositivo iOS, devi aggiornare il tuo profilo di provisioning con l'UDID di quel dispositivo e quindi ridistribuire l'app.

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

La funzione quindi analizza il restituito, analizzando le informazioni utili dal payload dell'evento e costruendo un messaggio da pubblicare sul canale 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}
`;

Infine, la funzione invia il messaggio costruito a Discord tramite una richiesta 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);
    }

Per informazioni su tutti gli eventi di avviso di App Distribution che puoi acquisire, consulta la documentazione di riferimento per gli avvisi di App Distribution .

Per informazioni su come utilizzare una funzione attivata da un avviso Firebase di feedback in-app da App Distribution , consulta Invia feedback in-app a Jira .