ทริกเกอร์การแจ้งเตือนของ Firebase

Firebase ให้การแจ้งเตือนสำหรับกิจกรรมการจัดการโครงการและแอปที่หลากหลาย ต่อไปนี้เป็นตัวอย่างเหตุการณ์ที่ Firebase สามารถส่งการแจ้งเตือนประเภทนี้ถึงคุณ:

  • สำหรับ Crashlytics เราสามารถแจ้งเตือนคุณหากแอปของคุณมีข้อขัดข้องเพิ่มขึ้นอย่างมาก
  • สำหรับการตรวจสอบประสิทธิภาพ เราสามารถแจ้งเตือนคุณหากเวลาเริ่มต้นของแอปเกินเกณฑ์ที่คุณกำหนดค่าไว้
  • สำหรับ App Distribution เราสามารถแจ้งเตือนคุณหากผู้ทดสอบของคุณลงทะเบียนอุปกรณ์ iOS ใหม่

ขึ้นอยู่กับการแจ้งเตือนและ ค่ากำหนดที่กำหนดโดยสมาชิกโครงการ Firebase จะแสดงการแจ้งเตือนประเภทนี้ในคอนโซล Firebase หรือส่งทางอีเมล

หน้านี้อธิบายวิธีการเขียนฟังก์ชันที่จัดการเหตุการณ์แจ้งเตือน

มันทำงานอย่างไร?

คุณสามารถทริกเกอร์ฟังก์ชันเพื่อตอบสนองต่อเหตุการณ์การแจ้งเตือนที่ส่งโดยแหล่งที่มาเหล่านี้:

ในวงจรชีวิตทั่วไป ฟังก์ชันที่ทริกเกอร์โดยเหตุการณ์การแจ้งเตือนจะดำเนินการดังต่อไปนี้:

  1. ฟัง/รอประเภทการแจ้งเตือนเฉพาะที่จะปล่อยออกมาจาก Firebase
  2. ทริกเกอร์เมื่อมีการส่งการแจ้งเตือน และรับเพย์โหลดเหตุการณ์ซึ่งมีข้อมูลเฉพาะเกี่ยวกับเหตุการณ์
  3. เรียกใช้โค้ดของฟังก์ชันเพื่อจัดการกับเพย์โหลดของเหตุการณ์

ทริกเกอร์ฟังก์ชั่นในเหตุการณ์แจ้งเตือน

ใช้แพ็กเกจย่อย firebase-functions/v2/alerts เพื่อเขียนฟังก์ชันที่จัดการเหตุการณ์การแจ้งเตือน ตัวอย่างเฉพาะผลิตภัณฑ์ต่อไปนี้แสดงให้เห็นถึงเวิร์กโฟลว์ที่ฟังก์ชันใช้เว็บฮุคเพื่อโพสต์ข้อความไปยังช่องทาง Discord เมื่อมีการส่งการแจ้งเตือนสำหรับผลิตภัณฑ์นั้นจาก Firebase

จัดการเหตุการณ์การแจ้งเตือน Crashlytics

สำหรับตัวอย่าง Crashlytics ต่อไปนี้ คุณใช้ Cloud Functions สำหรับ Firebase เพื่อจัดการกับเหตุการณ์แจ้งเตือนเกี่ยวกับปัญหาการหยุดทำงานร้ายแรงครั้งใหม่ ฟังก์ชันนี้จะโพสต์ข้อมูลการแจ้งเตือนในข้อความไปยังช่อง Discord

ตัวอย่างการแจ้งเตือนข้อขัดข้องใน Discord

ตัวอย่างการแจ้งเตือนสำหรับปัญหาข้อขัดข้องร้ายแรงใหม่

ฟังก์ชันรับฟังเหตุการณ์ onNewFatalIssuePublished :

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

จากนั้นฟังก์ชันจะแยกวิเคราะห์วัตถุเหตุการณ์ที่ส่งคืน สร้างข้อความเพื่อโพสต์ในช่อง 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}\`
`;

สุดท้าย ฟังก์ชันจะส่งข้อความที่สร้างขึ้นไปยัง 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);
    }

หากต้องการเรียนรู้เกี่ยวกับเหตุการณ์การแจ้งเตือน Crashlytics ทั้งหมดที่คุณสามารถบันทึกได้ ให้ไปที่เอกสารอ้างอิงสำหรับ การแจ้งเตือน Crashlytics

จัดการเหตุการณ์การแจ้งเตือนการตรวจสอบประสิทธิภาพ

ตัวอย่างในส่วนนี้แสดงวิธีเขียนฟังก์ชันสำหรับการแจ้งเตือนเกณฑ์ประสิทธิภาพ

ในตัวอย่างนี้ ฟังก์ชัน onThresholdAlertPublished จะส่งออกฟังก์ชันคลาวด์ที่รับฟังเหตุการณ์ประเภท PerformanceEvent<ThresholdAlertPayload> ซึ่งจะถูกส่งทุกครั้งที่มีการแจ้งเตือนเกณฑ์ประสิทธิภาพการทำงาน:

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

จากนั้น ฟังก์ชันจะแยกวิเคราะห์อ็อบเจกต์เหตุการณ์ที่ส่งคืน แยกวิเคราะห์ข้อมูลที่เป็นประโยชน์จากเพย์โหลดเหตุการณ์ และสร้างข้อความเพื่อโพสต์ในช่อง 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}
    `;

สุดท้าย ฟังก์ชันจะส่งข้อความที่สร้างขึ้นไปยัง Discord ผ่านคำขอ 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);
        }

หากต้องการเรียนรู้เกี่ยวกับเหตุการณ์การแจ้งเตือนประสิทธิภาพทั้งหมดที่คุณสามารถบันทึกได้ ให้ไปที่เอกสารอ้างอิงสำหรับ การแจ้งเตือนการตรวจสอบประสิทธิภาพ

จัดการเหตุการณ์การแจ้งเตือน App Distribution

ตัวอย่างในส่วนนี้แสดงวิธีเขียนฟังก์ชันสำหรับการแจ้งเตือนอุปกรณ์ iOS สำหรับผู้ทดสอบใหม่

ในตัวอย่างนี้ ฟังก์ชัน onNewTesterIosDevicePublished ส่งออกฟังก์ชันคลาวด์ที่รับฟังเหตุการณ์ประเภท AppDistributionEvent<NewTesterDevicePayload> ซึ่งจะถูกส่งทุกครั้งที่ผู้ทดสอบลงทะเบียนอุปกรณ์ iOS ใหม่ เมื่อลงทะเบียนอุปกรณ์ iOS ใหม่แล้ว คุณต้องอัปเดตโปรไฟล์การจัดสรรของคุณด้วย UDID ของอุปกรณ์นั้น จากนั้นแจกจ่ายแอพอีกครั้ง

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

จากนั้น ฟังก์ชันจะวิเคราะห์ข้อมูลที่ส่งคืน แยกวิเคราะห์ข้อมูลที่เป็นประโยชน์จากเพย์โหลดของเหตุการณ์ และสร้างข้อความเพื่อโพสต์ไปยังช่อง 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}
`;

สุดท้าย ฟังก์ชันจะส่งข้อความที่สร้างขึ้นไปยัง Discord ผ่านคำขอ 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);
    }

หากต้องการเรียนรู้เกี่ยวกับเหตุการณ์การแจ้งเตือน App Distribution ทั้งหมดที่คุณสามารถบันทึกได้ ให้ไปที่เอกสารอ้างอิงสำหรับ การแจ้งเตือน App Distribution

หากต้องการเรียนรู้วิธีใช้ฟังก์ชันที่ทริกเกอร์โดย การแจ้งเตือน Firebase ในแอปจาก App Distribution โปรดดู ส่งความคิดเห็นในแอปไปยัง Jira