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

Acionadores de alertas do Firebase

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

O Firebase fornece alertas para uma ampla variedade de eventos de gerenciamento de projetos e aplicativos. Aqui estão alguns eventos de exemplo para quando o Firebase pode enviar esse tipo de alerta:

  • Para o Crashlytics, podemos alertá-lo se seu aplicativo apresentar um aumento drástico de falhas.
  • Para monitoramento de desempenho, podemos alertá-lo se o tempo de inicialização do seu aplicativo ultrapassar o limite configurado.
  • Para distribuição de aplicativos, podemos alertá-lo se um de seus testadores registrar um novo dispositivo iOS.

Dependendo do alerta e das preferências definidas pelo membro do projeto , o Firebase mostra esses tipos de alertas no console do Firebase ou os envia por e-mail.

Esta página descreve como escrever funções que lidam com eventos de alerta.

Como funciona?

Você pode acionar funções em resposta a eventos de alerta emitidos por estas fontes:

Em um ciclo de vida típico, uma função acionada por um evento de alerta faz o seguinte:

  1. Escuta/aguarda que um tipo de alerta específico seja emitido pelo Firebase.
  2. Aciona quando o alerta é emitido e recebe a carga útil do evento que contém informações específicas sobre o evento.
  3. Chama o código da sua função para lidar com a carga útil do evento.

Acionar uma função em eventos de alerta

Use o subpacote firebase-functions/v2/alerts para escrever uma função que lida com eventos de alerta. Os exemplos específicos de produto a seguir demonstram um fluxo de trabalho em que uma função usa um webhook para postar uma mensagem em um canal Discord quando um alerta para esse produto é emitido do Firebase.

Gerenciar um evento de alerta do Crashlytics

No exemplo do Crashlytics a seguir, você usa o Cloud Functions para Firebase para lidar com um evento de alerta de um novo problema de falha fatal. Esta função publica as informações de alerta em uma mensagem para um canal do Discord.

Exemplo de notificação de falha no Discord

Exemplo de notificação para um novo problema de acidente fatal

A função escuta o evento onNewFatalIssuePublished :

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

A função então analisa o objeto de evento retornado, construindo uma mensagem para postar no canal 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}\`
`;

Finalmente, a função envia a mensagem construída para o 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);
    }

Para saber mais sobre todos os eventos de alerta do Crashlytics que você pode capturar, acesse a documentação de referência para alertas do Crashlytics .

Manipular um evento de alerta de monitoramento de desempenho

O exemplo nesta seção mostra como escrever uma função para alertas de limite de desempenho.

Neste exemplo, a função onThresholdAlertPublished exporta uma função de nuvem que escuta eventos do tipo PerformanceEvent<ThresholdAlertPayload> , que é enviado sempre que um alerta de limite de desempenho é acionado:

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

A função analisa o objeto de evento retornado, analisando informações úteis da carga útil do evento e construindo uma mensagem para postar no canal 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}
    `;

Por fim, a função envia a mensagem construída para o Discord por meio de uma solicitação 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);
        }

Para saber mais sobre todos os eventos de alerta de desempenho que você pode capturar, acesse a documentação de referência para alertas de monitoramento de desempenho .

Manipular um evento de alerta do App Distribution

O exemplo nesta seção mostra como escrever uma função para novos alertas de dispositivos iOS do testador.

Neste exemplo, a função onNewTesterIosDevicePublished exporta uma função de nuvem que escuta eventos do tipo AppDistributionEvent<NewTesterDevicePayload> , que é enviado sempre que um testador registra um novo dispositivo iOS. Quando um novo dispositivo iOS é registrado, você precisa atualizar seu perfil de provisionamento com o UDID desse dispositivo e redistribuir o aplicativo.

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

A função analisa o retornado, analisando informações úteis da carga útil do evento e construindo uma mensagem para postar no canal 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}
`;

Por fim, a função envia a mensagem construída para o Discord por meio de uma solicitação 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);
    }

Para saber mais sobre todos os eventos de alerta do App Distribution que você pode capturar, acesse a documentação de referência para alertas do App Distribution .