Firebase Alerts tetikleyicileri

Firebase, birçok farklı proje ve uygulama yönetimi için uyarılar sağlar etkinlikler. Firebase'in size bu tür bir uyarı gönderebileceği bazı örnek etkinlikler aşağıda verilmiştir:

  • Crashlytics için, uygulamanızın kilitlenmelerine neden olabilir.
  • Performance Monitoring için, uygulamanızın başlatma süresi yapılandırdığınız eşiği aşarsa sizi uyarabiliriz.
  • App Distribution için, test kullanıcılarınızdan biri yeni bir iOS kaydederse sizi uyarabiliriz olanak tanır.

Uyarıya ve proje üyesi tarafından belirlenen tercihlere bağlı olarak Firebase bu tür uyarıları Firebase konsolunda gösterir veya e-postayla gönderir.

Bu sayfada, Cloud Functions for Firebase (2. nesil) sürümünde uyarı etkinliklerini işleyen işlevlerin nasıl yazılacağı açıklanmaktadır.

Nasıl çalışır?

Aşağıdaki kaynaklar tarafından yayınlanan uyarı etkinliklerine yanıt olarak işlevleri tetikleyebilirsiniz:

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

  1. Firebase'den belirli bir uyarı türünün yayınlanmasını dinler/bekler.
  2. Uyarı yayınlandığında tetiklenir ve etkinlik yükünü aldığında etkinlikle ilgili belirli bilgileri içerir.
  3. Etkinlik yükünü işlemek için işlevinizin kodunu çağırır.

Uyarı etkinliklerinde işlev tetikleme

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

Crashlytics uyarı etkinliğini işleme

Aşağıdaki Crashlytics örneğinde, yeni bir kritik kilitlenme sorunuyla ilgili uyarı etkinliğini işlemek için Cloud Functions for Firebase'ı kullanıyorsunuz. Bu işlev, uyarı bilgilerini bir Discord kanalına mesaj olarak gönderir.

Discord'da örnek kilitlenme bildirimi

Yeni önemli kilitlenme sorunu için örnek bildirim

İşlev, Firebase'e karşılık gelen etkinliği işler önemli yeni bir sorun yayınlanıyor:

Node.js

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

Python

@crashlytics_fn.on_new_fatal_issue_published(secrets=["DISCORD_WEBHOOK_URL"])
def post_fatal_issue_to_discord(event: crashlytics_fn.CrashlyticsNewFatalIssueEvent) -> None:
    """Publishes a message to Discord whenever a new Crashlytics fatal issue occurs."""

Ardından, fonksiyon döndürülen etkinlik nesnesini ayrıştırır. etkinlik yükünden yararlı bilgileri ayrıştırmak ve Discord kanalında paylaşın:

Node.js

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

Python

    # Construct a helpful message to send to Discord.
    app_id = event.app_id
    issue = event.data.payload.issue
    message = f"""
🚨 New fatal issue for {app_id} in version {issue.app_version} 🚨

# {issue.title}

{issue.subtitle}

ID: `{issue.id}`
""".strip()

Son olarak işlev, oluşturulan mesajı HTTP isteğidir:

Node.js

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

Python

response = post_message_to_discord("Crashlytics Bot", message, DISCORD_WEBHOOK_URL.value)
if response.ok:
    print(f"Posted fatal Crashlytics alert {issue.id} for {app_id} to Discord.")
    pprint.pp(event.data.payload)
else:
    response.raise_for_status()

Yakalayabileceğiniz tüm Crashlytics uyarı etkinlikleri hakkında bilgi edinmek için şu sayfaya gidin: referans belgeleri, Crashlytics uyarı.

Performance Monitoring uyarı etkinliğini işleme

Bu örnekte, performans eşiği uyarı etkinliklerini dinleyen bir işlev dışa aktarılmaktadır:

Node.js

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

Python

@performance_fn.on_threshold_alert_published(secrets=["DISCORD_WEBHOOK_URL"])
def post_performance_alert_to_discord(event: performance_fn.PerformanceThresholdAlertEvent) -> None:
    """Publishes a message to Discord whenever a performance threshold alert is fired."""

İşlev, döndürülen etkinlik nesnesini ayrıştırarak yararlı bilgileri ayrıştırır. ve Discord'da yayınlamak üzere bir mesaj oluşturmak, kanal:

Node.js

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

Python

    # Construct a helpful message to send to Discord.
    app_id = event.app_id
    perf = event.data.payload
    message = f"""
⚠️ Performance Alert for {perf.metric_type} of {perf.event_type}: **{perf.event_name}** ⚠️

App ID: {app_id}
Alert condition: {perf.threshold_value} {perf.threshold_unit}
Percentile (if applicable): {perf.condition_percentile}
App version (if applicable): {perf.app_version}

Violation: {perf.violation_value} {perf.violation_unit}
Number of samples checked: {perf.num_samples}

**Investigate more:** {perf.investigate_uri}
""".strip()

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

Node.js

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

Python

response = post_message_to_discord("App Performance Bot", message,
                                   DISCORD_WEBHOOK_URL.value)
if response.ok:
    print(f"Posted Firebase Performance alert {perf.event_name} to Discord.")
    pprint.pp(event.data.payload)
else:
    response.raise_for_status()

Yakalayabileceğiniz tüm performans uyarısı etkinlikleri hakkında bilgi edinmek için referans belgeleme Performance Monitoring uyarı.

App Distribution uyarı etkinliğini işleme

Bu bölümdeki örnekte, yeni test kullanıcısı iOS cihaz uyarıları için nasıl işlev yazılacağı gösterilmektedir.

Bu örnekte işlev, test kullanıcısı yeni bir iOS cihaz kaydettiğinde gönderilen etkinlikleri dinler. Yeni bir iOS cihaz kaydedildiğinde temel hazırlık profilinizi bu cihazın UDID ile güncellemeniz ve ardından uygulamayı yeniden dağıtmanız gerekir.

Node.js

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

Python

@app_distribution_fn.on_new_tester_ios_device_published(secrets=["DISCORD_WEBHOOK_URL"])
def post_new_udid_to_discord(event: app_distribution_fn.NewTesterDeviceEvent) -> None:
    """Publishes a message to Discord whenever someone registers a new iOS test device."""

Ardından işlev, döndürülen nesneyi ayrıştırır, etkinlik yükünden yararlı bilgileri ayrıştırır ve Discord kanalına gönderilecek bir mesaj oluşturur:

Node.js

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

Python

    # Construct a helpful message to send to Discord.
    app_id = event.app_id
    app_dist = event.data.payload
    message = f"""
📱 New iOS device registered by {app_dist.tester_name} <{app_dist.tester_email}> for {app_id}

UDID **{app_dist.tester_device_identifier}** for {app_dist.tester_device_model_name}
""".strip()

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

Node.js

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

Python

response = post_message_to_discord("App Distro Bot", message, DISCORD_WEBHOOK_URL.value)
if response.ok:
    print(f"Posted iOS device registration alert for {app_dist.tester_email} to Discord.")
    pprint.pp(event.data.payload)
else:
    response.raise_for_status()

Yakalayabileceğiniz tüm App Distribution uyarı etkinlikleri hakkında bilgi edinmek için App Distribution uyarıları ile ilgili referans belgelerine gidin.

tarafından tetiklenen bir işlevin nasıl kullanılacağını App Distribution tarafından gönderilen uygulama içi geri bildirim Firebase uyarısı, Jira'ya uygulama içi geri bildirim gönderme konusunu inceleyin.