Pemicu Pemberitahuan Firebase

Firebase menyediakan pemberitahuan untuk berbagai peristiwa pengelolaan aplikasi dan project. Berikut adalah beberapa contoh peristiwa kapan Firebase dapat mengirimkan jenis pemberitahuan ini:

  • Untuk Crashlytics, kami dapat mengirimkan pemberitahuan jika aplikasi Anda mengalami peningkatan error secara drastis.
  • Untuk Performance Monitoring, kami dapat mengirimkan pemberitahuan jika waktu mulai aplikasi Anda melewati nilai batas yang dikonfigurasi.
  • Untuk App Distribution, kami dapat mengirimkan pemberitahuan jika salah satu penguji mendaftarkan perangkat iOS baru.

Bergantung pada pemberitahuan dan preferensi yang ditetapkan anggota project, Firebase menampilkan jenis-jenis pemberitahuan ini di Firebase console atau mengirimkannya melalui email.

Halaman ini menjelaskan cara menulis fungsi yang menangani peristiwa pemberitahuan.

Bagaimana cara kerjanya?

Anda dapat memicu fungsi sebagai respons terhadap peristiwa pemberitahuan yang dikeluarkan oleh sumber berikut:

Dalam siklus proses umum, fungsi yang dipicu oleh peristiwa pemberitahuan akan melakukan hal-hal berikut:

  1. Mendeteksi/menunggu jenis pemberitahuan tertentu yang akan dikeluarkan Firebase.
  2. Memicu fungsi saat pemberitahuan dikeluarkan, dan menerima payload peristiwa yang berisi informasi spesifik tentang peristiwa tersebut.
  3. Memanggil kode fungsi Anda untuk menangani payload peristiwa.

Memicu fungsi saat terjadi peristiwa pemberitahuan

Gunakan subpaket firebase-functions/v2/alerts untuk menulis fungsi yang menangani peristiwa pemberitahuan. Contoh spesifik per produk berikut menunjukkan alur kerja di mana sebuah fungsi menggunakan webhook untuk memposting pesan ke saluran Discord saat Firebase mengeluarkan pemberitahuan untuk produk tersebut.

Menangani peristiwa pemberitahuan Crashlytics

Untuk contoh Crashlytics berikut, Anda menggunakan Cloud Functions for Firebase untuk menangani peristiwa pemberitahuan masalah error fatal baru. Fungsi ini memposting informasi pemberitahuan dalam pesan ke saluran Discord.

Contoh notifikasi error di Discord

Contoh notifikasi untuk masalah error fatal baru

Fungsi ini memproses peristiwa onNewFatalIssuePublished:

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

Fungsi ini kemudian mengurai objek peristiwa yang ditampilkan, dengan membuat pesan yang akan diposting ke channel 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}\`
`;

Terakhir, fungsi tersebut mengirimkan pesan yang telah dibuat ke 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);
    }

Untuk mempelajari semua peristiwa pemberitahuan Crashlytics yang dapat Anda tangkap, buka dokumentasi referensi untuk pemberitahuan Crashlytics.

Menangani peristiwa pemberitahuan Performance Monitoring

Contoh di bagian ini menunjukkan cara menulis fungsi untuk pemberitahuan nilai batas performa.

Dalam contoh ini, fungsi onThresholdAlertPublished mengekspor fungsi cloud yang memproses peristiwa berjenis PerformanceEvent<ThresholdAlertPayload>, yang dikirim setiap kali pemberitahuan nilai batas dipicu:

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

Fungsi ini kemudian mengurai objek peristiwa yang ditampilkan, dengan mengurai informasi yang berguna dari payload peristiwa dan membuat pesan yang akan diposting ke saluran 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}
    `;

Terakhir, fungsi tersebut mengirimkan pesan yang telah dibuat ke Discord melalui permintaan 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);
        }

Untuk mempelajari semua peristiwa notifikasi performa aplikasi yang dapat Anda tangkap, buka dokumentasi referensi untuk pemberitahuan Performance Monitoring.

Menangani peristiwa pemberitahuan App Distribution

Contoh di bagian ini menunjukkan cara menulis fungsi untuk pemberitahuan perangkat iOS penguji baru.

Dalam contoh ini, fungsi onNewTesterIosDevicePublished mengekspor fungsi cloud yang memproses peristiwa berjenis AppDistributionEvent<NewTesterDevicePayload>, yang dikirim setiap kali penguji mendaftarkan perangkat iOS baru. Saat perangkat iOS baru didaftarkan, Anda perlu memperbarui profil penyediaan dengan UDID perangkat tersebut, lalu mendistribusikan ulang aplikasi.

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

Fungsi ini kemudian mengurai objek peristiwa yang ditampilkan, dengan mengurai informasi yang berguna dari payload peristiwa dan membuat pesan yang akan diposting ke saluran 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}
`;

Terakhir, fungsi tersebut mengirimkan pesan yang telah dibuat ke Discord melalui permintaan 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);
    }

Untuk mempelajari semua peristiwa pemberitahuan App Distribution yang dapat Anda tangkap, buka dokumentasi referensi untuk pemberitahuan App Distribution.

Untuk mempelajari cara menggunakan fungsi yang dipicu oleh pemberitahuan Firebase mengenai masukan dalam aplikasi dari App Distribution, lihat bagian Mengirim masukan dalam aplikasi ke Jira.