Firebase Uyarıları tetikleyicileri

Firebase, çok çeşitli proje ve uygulama yönetimi etkinlikleri için uyarı sağlar. Firebase'in size bu türde bir uyarı gönderebileceği durumlara ilişkin birkaç örnek olayı burada bulabilirsiniz:

  • Crashlytics için, uygulamanızın kilitlenmelerinde önemli bir artış olursa sizi uyarabiliriz.
  • Performans İzleme için, uygulamanızın başlangıç ​​süresi yapılandırılmış eşiğinizi aşarsa sizi uyarabiliriz.
  • Uygulama Dağıtımı için, test kullanıcılarınızdan biri yeni bir iOS cihazı kaydederse sizi uyarabiliriz.

Proje üyesi tarafından ayarlanan uyarıya ve tercihlere bağlı olarak Firebase, bu tür uyarıları Firebase konsolunda gösterir veya e-posta yoluyla gönderir.

Bu sayfa, uyarı olaylarını işleyen işlevlerin nasıl yazılacağını açıklar.

O nasıl çalışır?

Bu kaynaklar tarafından yayılan uyarı olaylarına yanıt olarak işlevleri tetikleyebilirsiniz:

Tipik bir yaşam döngüsünde, bir uyarı olayı tarafından tetiklenen bir işlev aşağıdakileri yapar:

  1. Firebase'den belirli bir uyarı türünün gönderilmesini dinler/bekler.
  2. Uyarı verildiğinde tetikler ve olayla ilgili belirli bilgileri içeren olay yükünü alır.
  3. Olay yükünü işlemek için işlevinizin kodunu çağırır.

Uyarı olaylarında bir işlevi tetikleyin

Uyarı olaylarını işleyen bir işlev yazmak için firebase-functions/v2/alerts alt paketini kullanın. Aşağıdaki ürüne özel örnekler, Firebase'den bir ürün için bir uyarı gönderildiğinde bir Discord kanalına mesaj göndermek için bir işlevin bir web kancası kullandığı bir iş akışını göstermektedir.

Bir Crashlytics uyarı olayını işleme

Aşağıdaki Crashlytics örneğinde, yeni bir ölümcül kilitlenme sorununun uyarı olayını işlemek için Cloud Functions for Firebase'i kullanıyorsunuz. Bu işlev, uyarı bilgilerini bir mesajda bir Discord kanalına gönderir.

Discord'da örnek kilitlenme bildirimi

Yeni bir ölümcül kilitlenme sorunu için örnek bildirim

İşlev, onNewFatalIssuePublished olayını dinler:

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

İşlev daha sonra döndürülen olay nesnesini ayrıştırarak Discord kanalına gönderilecek bir mesaj oluşturur:

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

Son olarak, işlev oluşturulmuş mesajı Discord'a gönderir:

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

Yakalayabileceğiniz tüm Crashlytics uyarı olayları hakkında bilgi edinmek için Crashlytics uyarıları referans belgelerine gidin.

Bir Performans İzleme uyarı olayını işleme

Bu bölümdeki örnek, performans eşiği uyarıları için bir işlevi nasıl yazacağınızı gösterir.

Bu örnekte, onThresholdAlertPublished işlevinde, her performans eşiği uyarısı tetiklendiğinde gönderilen PerformanceEvent<ThresholdAlertPayload> türündeki olayları dinleyen bir bulut işlevini dışa aktarır:

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

İşlev daha sonra döndürülen olay nesnesini ayrıştırır, olay yükünden faydalı bilgileri ayrıştırır ve Discord kanalına gönderilecek bir mesaj oluşturur:

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

Son olarak işlev, oluşturulan mesajı bir HTTP isteği aracılığıyla Discord'a gönderir:

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

Yakalayabileceğiniz tüm performans uyarısı olayları hakkında bilgi edinmek için Performans İzleme uyarıları referans belgelerine gidin.

Bir Uygulama Dağıtımı uyarı olayını yönetin

Bu bölümdeki örnek, yeni test cihazı iOS cihaz uyarıları için bir işlevi nasıl yazacağınızı gösterir.

Bu örnekte, onNewTesterIosDevicePublished işlevi, bir test kullanıcısı yeni bir iOS cihazını her kaydettiğinde gönderilen AppDistributionEvent<NewTesterDevicePayload> türündeki olayları dinleyen bir bulut işlevini dışa aktarır. Yeni bir iOS cihazı kaydedildiğinde, temel hazırlık profilinizi o cihazın UDID'si ile güncellemeniz ve ardından uygulamayı yeniden dağıtmanız gerekir.

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

İşlev daha sonra, olay yükünden yararlı bilgileri ayrıştırarak ve Discord kanalına gönderilecek bir mesaj oluşturarak, döndürülenleri ayrıştırır:

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

Son olarak işlev, oluşturulan mesajı bir HTTP isteği aracılığıyla Discord'a gönderir:

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

Yakalayabileceğiniz tüm Uygulama Dağıtımı uyarı olayları hakkında bilgi edinmek için Uygulama Dağıtımı uyarıları referans belgelerine gidin.

App Distribution'dan uygulama içi geri bildirim Firebase uyarısı tarafından tetiklenen bir işlevin nasıl kullanılacağını öğrenmek için bkz . Jira'ya uygulama içi geri bildirim gönderme .