FCM มีเครื่องมือ 3 ชุดที่จะช่วยให้คุณได้รับข้อมูลเชิงลึกเกี่ยวกับการส่งข้อความ ดังนี้
- รายงานการส่งข้อความของคอนโซล Firebase รายการ
- เมตริกการแสดงของ Android SDK แบบรวมจาก API ข้อมูล Firebase Cloud Messaging
- การส่งออกข้อมูลที่ครอบคลุมไปยัง Google BigQuery
เครื่องมือการรายงานทั้งหมดที่อธิบายไว้ในหน้านี้ต้องใช้ Google Analytics เพื่อให้ทำงานได้ หากไม่ได้เปิดใช้ Google Analytics สำหรับโปรเจ็กต์ของคุณ คุณสามารถตั้งค่าได้ใน การผสานรวม แท็บการตั้งค่าโปรเจ็กต์ Firebase
โปรดทราบว่าการรายงานสถิติหลายรายการในหน้านี้ อาจมีความล่าช้าได้ถึง 24 ชั่วโมงเนื่องจากการจัดกลุ่มข้อมูลการวิเคราะห์
รายงานการส่งข้อความ
ใน รายงาน ในคอนโซล Firebase คุณสามารถดู ข้อมูลต่อไปนี้สำหรับข้อความที่ส่งไปยัง FCM SDK สำหรับแพลตฟอร์ม Android หรือ Apple ซึ่งรวมถึงข้อความที่ส่งผ่านการเขียนการแจ้งเตือนและ API ของ FCM
- การส่ง — ข้อความเกี่ยวกับข้อมูลหรือข้อความแจ้งเตือนอยู่ในคิวแล้วสำหรับ หรือได้รับการส่งไปยังบริการของบุคคลที่สาม เช่น APN เรียบร้อยแล้ว สำหรับการจัดส่ง ดูอายุการใช้งานของข้อความ เพื่อดูข้อมูลเพิ่มเติม
- ได้รับแล้ว (ใช้ได้เฉพาะในอุปกรณ์ Android) — ข้อความข้อมูลหรือ แอปได้รับข้อความแจ้งเตือนแล้ว ข้อมูลนี้พร้อมใช้งาน เมื่ออุปกรณ์ Android ที่รับมี FCM SDK 18.0.1 หรือ สูงกว่าที่ติดตั้ง
- การแสดงผล (ใช้ได้กับข้อความการแจ้งเตือนบนอุปกรณ์ Android เท่านั้น) — การแจ้งเตือนบนจอแสดงผลแสดงในอุปกรณ์ขณะที่แอป ในเบื้องหลัง
- เปิด — ผู้ใช้เปิดข้อความแจ้งเตือน รายงานสำหรับ การแจ้งเตือนที่ได้รับเมื่อแอปอยู่ในเบื้องหลัง
ข้อมูลนี้จะพร้อมใช้งานในข้อความทั้งหมดที่มีเพย์โหลดการแจ้งเตือน และทั้งหมดที่ติดป้ายกำกับ ข้อความข้อมูล หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับป้ายกำกับ โปรดดู การเพิ่มป้ายกำกับข้อมูลวิเคราะห์ในข้อความ
เมื่อดูรายงานข้อความ คุณจะกำหนดช่วงวันที่สำหรับข้อมูลที่แสดงได้ ที่มีตัวเลือกในการส่งออกเป็น CSV นอกจากนี้ คุณยังกรองตามเกณฑ์ต่อไปนี้ได้ด้วย
- แพลตฟอร์ม (iOS หรือ Android)
- แอป
- ป้ายกำกับข้อมูลวิเคราะห์ที่กำหนดเอง
การเพิ่มป้ายกำกับข้อมูลวิเคราะห์ในข้อความ
การติดป้ายกำกับข้อความมีประโยชน์อย่างยิ่งสำหรับการวิเคราะห์ที่กำหนดเอง ทำให้คุณสามารถ
กรองสถิติการส่งตามป้ายกำกับหรือชุดของป้ายกำกับ คุณสามารถเพิ่ม
ติดป้ายกำกับให้กับข้อความที่ส่งผ่าน API ของ HTTP v1 โดยการตั้งค่า
ฟิลด์ fcmOptions.analyticsLabel
ในฟิลด์
message หรือใน
ช่อง AndroidFcmOptions
หรือ ApnsFcmOptions
เฉพาะแพลตฟอร์ม
ป้ายกำกับ Analytics เป็นสตริงข้อความในรูปแบบ ^[a-zA-Z0-9-_.~%]{1,50}$
ป้ายกำกับอาจมีทั้งอักษรตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
ตัวเลข และสัญลักษณ์ต่อไปนี้
-
~
%
ความยาวสูงสุด 50 อักขระ คุณสามารถระบุป้ายกำกับที่ไม่ซ้ำกันได้สูงสุด 100 ป้ายต่อวัน ข้อความที่มีป้ายกำกับที่เพิ่มเกินกว่าขีดจำกัดดังกล่าวจะไม่ได้รับการรายงาน
ในแท็บรายงานการรับส่งข้อความในคอนโซล Firebase คุณจะค้นหา ของป้ายกำกับที่มีอยู่ทั้งหมด และใช้ป้ายกำกับทีละรายการหรือใช้ร่วมกันเพื่อกรอง สถิติที่แสดง
ข้อมูลการนำส่งรวมผ่าน FCM Data API
Firebase Cloud Messaging Data API ช่วยให้คุณเรียกข้อมูลที่สามารถ ช่วยให้คุณเข้าใจผลลัพธ์ของคำขอแชทที่กำหนดเป้าหมายไปยัง Android แอปพลิเคชัน API ให้ข้อมูลแบบรวมจากข้อมูลทั้งหมด อุปกรณ์ Android ที่เปิดใช้คอลเล็กชันในโปรเจ็กต์ได้ ซึ่งรวมถึงรายละเอียดเกี่ยวกับ เปอร์เซ็นต์ของข้อความที่ส่ง โดยไม่ล่าช้า รวมถึงจำนวนข้อความที่ล่าช้าหรือหายไปภายใน Transport Layer ของ Android การประเมินข้อมูลนี้สามารถเผยให้เห็นแนวโน้มกว้างๆ ในการส่งข้อความและช่วยให้คุณ ค้นหาวิธีที่มีประสิทธิภาพในการปรับปรุงประสิทธิภาพการส่งคําขอของคุณ โปรดดูลำดับเวลาข้อมูลสรุปสำหรับข้อมูลเกี่ยวกับความพร้อมใช้งานของช่วงวันที่ในรายงาน
API จะให้ข้อมูลทั้งหมดที่มีอยู่สำหรับแอปพลิเคชันที่ระบุ โปรดดู เอกสารอ้างอิง API
ข้อมูลมีการแยกออกอย่างไร
ข้อมูลการแสดงโฆษณาจะแจกแจงตามแอปพลิเคชัน วันที่ และป้ายกำกับข้อมูลวิเคราะห์
ระบบจะแสดงผลการเรียก API
ข้อมูลสำหรับชุดค่าผสมทุกชุดของป้ายกำกับวันที่ การใช้งาน และข้อมูลวิเคราะห์ สำหรับ
เช่น ออบเจ็กต์ JSON ประเภท androidDeliveryData
รายการเดียวจะมีลักษณะดังนี้
{
"appId": "1:23456789:android:a93a5mb1234efe56",
"date": {
"year": 2021,
"month": 1,
"day": 1
},
"analyticsLabel": "foo",
"data": {
"countMessagesAccepted": "314159",
"messageOutcomePercents": {
"delivered": 71,
"pending": 15
},
"deliveryPerformancePercents": {
"deliveredNoDelay": 45,
"delayedDeviceOffline": 11
}
}
วิธีตีความเมตริก
ข้อมูลการนำส่งจะระบุเปอร์เซ็นต์ของข้อความที่ตรงกับข้อความแต่ละอย่างต่อไปนี้ เมตริกต่างๆ อาจเป็นไปได้ว่าข้อความเดียวเหมาะกับหลายเมตริก เนื่องจากข้อจำกัดในการรวบรวมข้อมูลและ ระดับรายละเอียดที่เรารวบรวมเมตริก ผลลัพธ์ข้อความบางอย่างไม่แสดงอยู่ในเมตริกเลย ดังนั้นเปอร์เซ็นต์ด้านล่างจะไม่รวมกันได้ 100%
จำนวนข้อความที่ยอมรับ
จำนวนเดียวที่รวมอยู่ในชุดข้อมูลคือจำนวนข้อความที่ ที่ FCM ยอมรับให้นำส่งอุปกรณ์ Android เปอร์เซ็นต์ทั้งหมดใช้ค่านี้ เป็นตัวส่วน โปรดทราบว่าจำนวนนี้จะไม่รวมข้อความ กำหนดเป้าหมายไปยังผู้ใช้ ปิดใช้งานการรวบรวมข้อมูลการใช้งานและการวินิจฉัยใน อุปกรณ์ของตน
เปอร์เซ็นต์ผลลัพธ์ข้อความ
ฟิลด์ที่รวมอยู่ใน
MessageOutcomePercents
ให้ข้อมูลเกี่ยวกับ
ของคำขอแชท ทั้ง 2 หมวดหมู่ไม่เกี่ยวข้องกัน ช่วย
ตอบคำถาม เช่น "ข้อความของฉันถูกส่งไปแล้วหรือไม่" และ "สาเหตุเกิดจาก
ข้อความจะถูกทิ้งหรือไม่"
เช่น ค่าสูงสำหรับช่อง droppedTooManyPendingMessages
อาจ
ส่งสัญญาณว่าอินสแตนซ์แอปได้รับปริมาณ
ข้อความที่ยุบไม่ได้
เกินขีดจำกัดของ FCM ที่มีข้อความที่รออนุมัติ 100 ข้อความ
เพื่อลดปัญหานี้ โปรดตรวจสอบว่าแอปของคุณจัดการการเรียก
onDeletedMessages
และพิจารณาการส่งข้อความที่ยุบได้ ในทำนองเดียวกัน เปอร์เซ็นต์ที่สูงของ
droppedDeviceInactive
อาจเป็นสัญญาณให้อัปเดตโทเค็นการลงทะเบียนบน
เซิร์ฟเวอร์ ลบโทเค็นที่ไม่มีการอัปเดตและยกเลิกการสมัครรับข้อมูลจากหัวข้อ โปรดดู
จัดการโทเค็นการจดทะเบียน FCM รายการ
เพื่อดูแนวทางปฏิบัติแนะนำในด้านนี้
เปอร์เซ็นต์ประสิทธิภาพการแสดงโฆษณา
ช่องในDeliveryPerformancePercents
ให้ข้อมูลเกี่ยวกับข้อความที่ส่งสำเร็จ ทั้งนี้
สามารถตอบคำถามเช่น "ข้อความของฉันล่าช้าหรือไม่" และ
"ทำไมข้อความจึงล่าช้า" ตัวอย่างเช่น ค่าสูงสำหรับ
delayedMessageThrottled
จะบ่งชี้อย่างชัดเจนว่าคุณเกินจำนวน
ขีดจำกัดสูงสุดต่ออุปกรณ์
และควรปรับอัตราการส่งข้อความ
เปอร์เซ็นต์ข้อมูลเชิงลึกเกี่ยวกับข้อความ
ออบเจ็กต์นี้ให้ข้อมูลเพิ่มเติมเกี่ยวกับข้อความที่ส่งทั้งหมด
ช่อง priorityLowered
แสดงเปอร์เซ็นต์ของข้อความที่ยอมรับ
มีลำดับความสำคัญลดลงจาก HIGH
เป็น NORMAL
ถ้าค่านี้สูง ให้ลองส่งข้อความที่มีลำดับความสำคัญสูงน้อยลงหรือตรวจสอบว่า
คุณจะแสดงการแจ้งเตือนเมื่อมีการส่งข้อความที่มีลำดับความสำคัญสูงเสมอ โปรดดูข้อมูลเพิ่มเติมในเอกสารประกอบเกี่ยวกับลำดับความสำคัญของข้อความ
ข้อมูลนี้แตกต่างจากข้อมูลที่ส่งออกไปยัง BigQuery อย่างไร
BigQuery Export จะแสดงบันทึกข้อความแต่ละรายการเกี่ยวกับการยอมรับข้อความโดย แบ็กเอนด์ FCM และการส่งข้อความใน SDK ในอุปกรณ์ (ขั้นตอนที่ 2 และ 4 จาก สถาปัตยกรรม FCM) ข้อมูลนี้มีประโยชน์ในการตรวจสอบว่าข้อความแต่ละรายการ ยอมรับและนำส่งแล้ว อ่านเพิ่มเติมเกี่ยวกับ การส่งออกข้อมูล BigQuery ในส่วนถัดไป
ในทางตรงกันข้าม Firebase Cloud Messaging Data API จะให้รายละเอียดที่รวบรวมไว้ เกี่ยวกับสิ่งที่จะเกิดขึ้นโดยเฉพาะใน Android Transport Layer (หรือขั้นตอนที่ 3 ของ สถาปัตยกรรม FCM) ข้อมูลนี้จะให้ข้อมูลเชิงลึกที่เฉพาะเจาะจงเกี่ยวกับการแสดงโฆษณา ข้อความจากแบ็กเอนด์ FCM ไปยัง Android SDK มีประโยชน์อย่างยิ่งสำหรับ แสดงแนวโน้มว่าทำไมข้อความจึงล่าช้าหรือหายไปในระหว่างการส่งนี้
ในบางกรณี อาจเป็นไปได้ว่าชุดข้อมูล 2 ชุดอาจไม่ตรงกันอย่างแม่นยำ เนื่องจากสาเหตุต่อไปนี้
- เมตริกรวมจะสุ่มตัวอย่างข้อความเพียงบางส่วนเท่านั้น
- เมตริกรวมจะมีการปัดเศษ
- เราไม่มีเมตริกที่ต่ำกว่าเกณฑ์ความเป็นส่วนตัว
- ผลลัพธ์ข้อความบางส่วนหายไปเนื่องจากการเพิ่มประสิทธิภาพวิธีที่เรา จัดการการเข้าชมปริมาณมาก
ข้อจำกัดของ API
ลำดับเวลาข้อมูลรวม
API จะแสดงข้อมูลประวัติ 7 วัน แต่ข้อมูลที่ API นี้แสดงผลจะล่าช้าสูงสุด 5 วัน ตัวอย่างเช่น บน วันที่ 20 มกราคม ข้อมูลของวันที่ 9-15 มกราคมจะยังพร้อมใช้งาน แต่ไม่มีข้อมูลสำหรับเดือนมกราคม วันที่ 16 ขึ้นไป นอกจากนี้ เราจะจัดเตรียมข้อมูลให้อย่างดีที่สุด ในกรณีที่ เมื่อข้อมูลหยุดทำงาน FCM จะพยายามแก้ไขต่อไปและจะไม่ทดแทนข้อมูลหลังจาก ปัญหาได้รับการแก้ไขแล้ว เมื่อเกิดการหยุดชะงักมากขึ้น ข้อมูลอาจใช้งานไม่ได้เป็นเวลา 1 สัปดาห์ หรือมากกว่านั้น
ความครอบคลุมของข้อมูล
เมตริกที่ได้จาก Firebase Cloud Messaging Data API มีวัตถุประสงค์เพื่อ ให้ข้อมูลเชิงลึกเกี่ยวกับแนวโน้มกว้างๆ ของการส่งข้อความ อย่างไรก็ตาม พวกเขาจะไม่ ให้ความครอบคลุม 100% ในทุกสถานการณ์ของข้อความ สถานการณ์ต่อไปนี้ ผลลัพธ์ที่ทราบไม่ได้แสดงอยู่ในเมตริก
ข้อความที่หมดอายุ
หาก Time To Live (TTL) หมดอายุ
หลังจากสิ้นสุดวันที่ในบันทึกที่ระบุ ข้อความจะไม่ถูกนับ
droppedTtlExpired
ในวันที่ดังกล่าว
ข้อความไปยังอุปกรณ์ที่ไม่ได้ใช้งาน
ข้อความที่ส่งไปยังอุปกรณ์ที่ไม่มีการใช้งานอาจแสดงหรือไม่แสดงในชุดข้อมูล
โดยขึ้นอยู่กับเส้นทางข้อมูลที่ใช้ ซึ่งอาจทําให้มีการนับผิดพลาด
droppedDeviceInactive
และ pending
ช่อง
ส่งข้อความไปยังอุปกรณ์ที่มีค่ากำหนดบางอย่างของผู้ใช้
ผู้ใช้ที่ปิดใช้งานการรวบรวมข้อมูลการใช้งานและการวินิจฉัยบน อุปกรณ์ของผู้ใช้จะไม่มีข้อความของผู้ใช้รวมอยู่ในการนับของเรา เพื่อให้ ในแบบของตัวเอง
ค่าปัดเศษและต่ำสุด
FCM จงใจปัดเศษและไม่รวมจำนวนที่มีปริมาณไม่มาก ให้เพียงพอ
การส่งออกข้อมูล BigQuery
คุณสามารถส่งออกข้อมูลข้อความไปยัง BigQuery เพื่อการวิเคราะห์เพิ่มเติม BigQuery ช่วยให้คุณวิเคราะห์ข้อมูลโดยใช้ BigQuery SQL และส่งออกไปยังระบบคลาวด์อื่นได้ หรือใช้ข้อมูลสำหรับโมเดล ML ที่กำหนดเอง การส่งออกไปยัง BigQuery ประกอบด้วยข้อมูลที่มีอยู่ทั้งหมดสำหรับข้อความ ประเภทข้อความ หรือว่ามีการส่งข้อความผ่าน API หรือ การเขียนการแจ้งเตือน
สำหรับข้อความที่ส่งไปยังอุปกรณ์ที่มี SDK ขั้นต่ำ FCM ดังต่อไปนี้ คุณจะมีตัวเลือกเพิ่มเติมในการเปิดใช้การส่งออกข้อความ ข้อมูลการนำส่งของแอป
- Android 20.1.0 ขึ้นไป
- iOS 8.6.0 ขึ้นไป
- Firebase Web SDK 9.0.0 ขึ้นไป
โปรดดูรายละเอียดด้านล่างเกี่ยวกับการเปิดใช้การส่งออกข้อมูลสำหรับ Android และ iOS
ลิงก์โปรเจ็กต์กับ BigQuery เพื่อเริ่มต้นใช้งาน โดยทำดังนี้
เลือกตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้
เปิด การเขียนการแจ้งเตือน แล้วคลิกเข้าถึง BigQuery ที่ด้านล่างของหน้า
จาก การผสานรวม ในคอนโซล Firebase ให้คลิกลิงก์ใน BigQuery
หน้านี้แสดงตัวเลือกการส่งออกFCMสำหรับผลิตภัณฑ์ทั้งหมด แอปที่เปิดใช้ FCM ในโปรเจ็กต์
ทำตามวิธีการบนหน้าจอเพื่อเปิดใช้ BigQuery
โปรดดูลิงก์ Firebase กับ BigQuery เพื่อดูข้อมูลเพิ่มเติม
สิ่งที่จะเกิดขึ้นเมื่อเปิดใช้การส่งออก BigQuery สำหรับ Cloud Messaging มีดังนี้
Firebase จะส่งออกข้อมูลไปยัง BigQuery หมายเหตุ การเผยแพร่ข้อมูลเพื่อส่งออกในช่วงแรกอาจใช้เวลาถึง 48 ชั่วโมง เสร็จสมบูรณ์
- คุณสามารถกำหนดเวลาการทดแทนข้อมูลด้วยตนเอง สำหรับช่วง 30 วันที่ผ่านมา
หลังจากสร้างชุดข้อมูลแล้ว ตำแหน่ง ไม่สามารถเปลี่ยนแปลง แต่คัดลอกชุดข้อมูลไปยังตำแหน่งอื่นได้ หรือย้าย (สร้างใหม่) ชุดข้อมูลไปยังตำแหน่งอื่นด้วยตนเอง เพื่อเรียนรู้ ดูข้อมูลเพิ่มเติมที่เปลี่ยนตำแหน่งชุดข้อมูล
Firebase จะตั้งค่าการซิงค์ข้อมูลจากโปรเจ็กต์ Firebase เป็นประจำเพื่อ BigQuery การดำเนินการส่งออกรายวันเหล่านี้เริ่มเวลา 4:00 น. ตามเวลาแปซิฟิก และมักจะเสร็จสิ้นภายใน 24 ชั่วโมง
โดยค่าเริ่มต้น แอปทั้งหมดในโปรเจ็กต์จะลิงก์กับ BigQuery และทุกๆ แอปที่คุณเพิ่มในโปรเจ็กต์ในภายหลังจะลิงก์โดยอัตโนมัติ BigQuery คุณสามารถ จัดการแอปที่ส่งข้อมูล
หากต้องการปิดใช้งานการส่งออก BigQuery ยกเลิกการลิงก์โปรเจ็กต์ ในคอนโซล Firebase
เปิดใช้การส่งออกข้อมูลการส่งข้อความ
อุปกรณ์ iOS ที่ใช้ FCM SDK 8.6.0 ขึ้นไป จะเปิดใช้การส่งออกข้อมูลการส่งข้อความของแอปได้ FCM รองรับการส่งออกข้อมูลทั้งสำหรับการแจ้งเตือนและการแจ้งเตือนในเบื้องหลัง ก่อนที่จะเปิดใช้ตัวเลือกเหล่านี้ คุณต้องสร้างส่วน FCM- ลิงก์ BiqQuery สำหรับโปรเจ็กต์ของคุณตามที่อธิบายไว้ใน การส่งออกข้อมูล BigQuery
เปิดใช้การส่งออกข้อมูลการนำส่งสำหรับการแจ้งเตือน
เนื่องจากจะมีเพียงการแจ้งเตือนเท่านั้นที่สามารถเรียกใช้แอปบริการการแจ้งเตือนได้ คุณต้องเพิ่มส่วนขยายบริการการแจ้งเตือนลงในแอปและการโทร API นี้ภายในส่วนขยายบริการเพื่อเปิดใช้การติดตามข้อความ Display โปรดดู เอกสารประกอบของ Apple เกี่ยวกับการแก้ไขเนื้อหาในการแจ้งเตือนที่ส่งใหม่
ต้องดำเนินการดังต่อไปนี้กับทุกการแจ้งเตือนที่ได้รับ
Swift
// For alert notifications, call the API inside the service extension:
class NotificationService: UNNotificationServiceExtension {
override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
Messaging.extensionHelper()
.exportDeliveryMetricsToBigQuery(withMessageInfo:request.content.userInfo)
}
}
Objective-C
// For alert notifications, call the API inside the service extension:
@implementation NotificationService
- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request
withContentHandler:(void (^)(UNNotificationContent *_Nonnull))contentHandler {
[[FIRMessaging extensionHelper] exportDeliveryMetricsToBigQueryWithMessageInfo:request.content.userInfo];
}
@end
หากคุณกำลังสร้างคำขอโดยใช้ HTTP v1 API โปรด
ระบุ mutable-content = 1
ใน
ออบเจ็กต์เพย์โหลด
เปิดใช้การส่งออกข้อมูลการนำส่งสำหรับการแจ้งเตือนในเบื้องหลัง
สำหรับข้อความเบื้องหลังที่ได้รับเมื่อแอปทำงานอยู่เบื้องหน้าหรือเบื้องหลัง คุณสามารถเรียกใช้ API การส่งออกข้อมูลภายในเครื่องจัดการข้อความข้อมูลของแอปหลักได้ การโทรนี้ต้องดำเนินการสำหรับการแจ้งเตือนทั้งหมดที่ได้รับ
Swift
// For background notifications, call the API inside the UIApplicationDelegate or NSApplicationDelegate method:
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {
Messaging.extensionHelper().exportDeliveryMetricsToBigQuery(withMessageInfo:userInfo)
}
Objective-C
// For background notifications, call the API inside the UIApplicationDelegate or NSApplicationDelegate method:
@implementation AppDelegate
- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
[[FIRMessaging extensionHelper] exportDeliveryMetricsToBigQueryWithMessageInfo:userInfo];
}
@end
ข้อมูลที่ส่งออกไปยัง BigQuery
โปรดทราบว่าการกำหนดเป้าหมายโทเค็นที่ไม่มีการอัปเดตหรือการลงทะเบียนที่ไม่ได้ใช้งานอาจทำให้ สถิติเหล่านี้
สคีมาของตารางที่ส่งออกคือ
_นอกเวลา | การประทับเวลา | คอลัมน์สมมตินี้มีการประทับเวลาสำหรับจุดเริ่มต้นของวัน (เวลา UTC) ที่มีการโหลดข้อมูล สำหรับพาร์ติชัน YYYYMMDD คอลัมน์จำลองนี้ มีค่า TIMESTAMP('YYYY-MM-DD') |
event_timestamp | การประทับเวลา | การประทับเวลาเหตุการณ์ที่เซิร์ฟเวอร์บันทึกไว้ |
หมายเลขโปรเจ็กต์ | INTEGER | หมายเลขโปรเจ็กต์จะระบุโปรเจ็กต์ที่ส่งข้อความ |
message_id | STRING | รหัสข้อความจะระบุข้อความ สร้างจากรหัสแอปและ การประทับเวลา รหัสข้อความอาจซ้ำกันได้ในบางกรณี |
รหัสอินสแตนซ์ [instance_id] | STRING | รหัสที่ไม่ซ้ำกันของแอปที่ส่งข้อความถึง (หากมี) สามารถทำได้ รหัสอินสแตนซ์หรือรหัสการติดตั้ง Firebase |
ประเภทข้อความ | STRING | ประเภทของข้อความ ซึ่งอาจเป็นข้อความแจ้งเตือนหรือข้อความข้อมูล หัวข้อ ใช้เพื่อระบุข้อความต้นฉบับสำหรับหัวข้อหรือแคมเปญที่ส่ง ข้อความที่ตามมาจะเป็นการแจ้งเตือนหรือข้อความข้อมูล |
SDK แพลตฟอร์ม | STRING | แพลตฟอร์มของแอปผู้รับ |
ชื่อแอป | STRING | ชื่อแพ็กเกจสำหรับแอป Android หรือรหัสชุดสำหรับแอป iOS |
ปุ่มยุบ | STRING | คีย์ยุบจะระบุกลุ่มข้อความที่สามารถยุบได้ เมื่อไม่ได้เชื่อมต่ออุปกรณ์ ระบบจะแสดงเฉพาะข้อความสุดท้ายที่มีการยุบเท่านั้น คีย์ อยู่ในคิวเพื่อนำส่งขั้นสุดท้าย |
Priority | INTEGER | ลำดับความสำคัญของข้อความ ค่าที่ถูกต้องคือ "ปกติ" และ "สูง" ใน iOS สิ่งเหล่านี้สอดคล้องกับลำดับความสำคัญของ APN ที่ 5 และ 10 |
TTL | INTEGER | พารามิเตอร์นี้จะระบุระยะเวลา (เป็นวินาที) ที่จะเก็บข้อความไว้ ในพื้นที่เก็บข้อมูล FCM หากอุปกรณ์ออฟไลน์อยู่ |
หัวข้อ | STRING | ชื่อหัวข้อที่มีการส่งข้อความ (หากมี) |
รหัสกลุ่ม | INTEGER | รหัสจำนวนมากจะระบุกลุ่มของข้อความที่เกี่ยวข้องกัน เช่น ส่งไปยังหัวข้อ |
เหตุการณ์ | STRING | ประเภทของเหตุการณ์
โดยค่าที่เป็นไปได้มีดังนี้
|
ป้ายกำกับ analytics_label | STRING | ด้วย HTTP v1 API คุณสามารถตั้งค่าป้ายกำกับข้อมูลวิเคราะห์ได้เมื่อส่งข้อความ เพื่อทำเครื่องหมาย ข้อความเพื่อวัตถุประสงค์ในการวิเคราะห์ |
คุณใช้ข้อมูลที่ส่งออกทำอะไรได้บ้าง
ส่วนต่อไปนี้มีตัวอย่างของการค้นหาที่คุณเรียกใช้ใน BigQuery ได้ กับข้อมูล FCM ที่ส่งออกของคุณ
นับข้อความที่ส่งตามแอป
SELECT app_name, COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED'
AND message_id != ''
GROUP BY 1;
นับอินสแตนซ์ของแอปที่ไม่ซ้ำกันซึ่งกำหนดเป้าหมายโดยข้อความ
SELECT COUNT(DISTINCT instance_id)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED';
นับข้อความแจ้งเตือนที่ส่งแล้ว
SELECT COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED'
AND message_type = 'DISPLAY_NOTIFICATION';
นับข้อความข้อมูลที่ส่ง
SELECT COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED'
AND message_type = 'DATA_MESSAGE';
นับข้อความที่ส่งไปยังหัวข้อหรือแคมเปญ
SELECT COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED'
AND bulk_id = your bulk id AND message_id != '';
หากต้องการติดตามกิจกรรมของข้อความที่ส่งไปยังหัวข้อหนึ่ง ให้แก้ไขการค้นหานี้เป็น
แทนที่ AND message_id != ''
ด้วย AND message_id = <your message id>;
คำนวณระยะเวลา Fanout สำหรับหัวข้อหรือแคมเปญหนึ่งๆ
เวลาเริ่มต้น Fanout คือเวลาที่ได้รับคำขอแรกและสิ้นสุด time คือเวลาข้อความสุดท้ายที่กําหนดเป้าหมายเป็นอินสแตนซ์เดียว แล้ว
SELECT TIMESTAMP_DIFF( end_timestamp, start_timestamp, MILLISECOND ) AS fanout_duration_ms, end_timestamp, start_timestamp FROM ( SELECT MAX(event_timestamp) AS end_timestamp FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND event = 'MESSAGE_ACCEPTED' AND bulk_id = your bulk id ) sent CROSS JOIN ( SELECT event_timestamp AS start_timestamp FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND event = 'MESSAGE_ACCEPTED' AND bulk_id = your bulk id AND message_type = 'TOPIC' ) initial_message;
จำนวนเปอร์เซ็นต์ของข้อความที่ส่งแล้ว
SELECT messages_sent, messages_delivered, messages_delivered / messages_sent * 100 AS percent_delivered FROM ( SELECT COUNT(DISTINCT CONCAT(message_id, instance_id)) AS messages_sent FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND event = 'MESSAGE_ACCEPTED' ) sent CROSS JOIN ( SELECT COUNT(DISTINCT CONCAT(message_id, instance_id)) AS messages_delivered FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND (event = 'MESSAGE_DELIVERED' AND message_id IN ( SELECT message_id FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND event = 'MESSAGE_ACCEPTED' GROUP BY 1 ) ) delivered;
ติดตามเหตุการณ์ทั้งหมดสำหรับรหัสข้อความและรหัสอินสแตนซ์ที่ระบุ
SELECT *
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND message_id = 'your message id'
AND instance_id = 'your instance id'
ORDER BY event_timestamp;
คำนวณเวลาในการตอบสนองสำหรับรหัสข้อความและรหัสอินสแตนซ์ที่ระบุ
SELECT TIMESTAMP_DIFF( MAX(delivered_time), MIN(accepted_time), MILLISECOND ) AS latency_ms FROM ( SELECT event_timestamp AS accepted_time FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND message_id = 'your message id' AND instance_id = 'your instance id' AND event = 'MESSAGE_ACCEPTED' ) sent CROSS JOIN ( SELECT event_timestamp AS delivered_time FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND message_id = 'your message id' AND instance_id = 'your instance id' AND (event = 'MESSAGE_DELIVERED' ) delivered;