ทริกเกอร์การแจ้งเตือนของ 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