כדי לפתור בעיות מתמשכות בשליחת הודעות, השתמשו בפותר הבעיות של FCM ועיינו בפוסט הזה בבלוג כדי להבין את הסיבות השונות לכך שההודעה לא מוצגת. אפשר גם להיכנס ללוח הבקרה של סטטוס FCM כדי לבדוק אם יש שיבושים בשירות שמשפיעים על FCM.
בנוסף, FCM מספק שלוש קבוצות של כלים שיעזרו לכם לקבל תובנות לגבי הערכה רחבה של הצלחת העברת ההודעות והאסטרטגיה:
- דוחות מסירת הודעות במסוף Firebase
- מדדי הצגה מצטברים של Android SDK מ-Firebase Cloud Messaging Data API
- ייצוא נתונים מקיף ל-Google BigQuery
כדי להשתמש בייצוא נתונים אל BigQuery ובכרטיסייה Reports במסוף Firebase, צריך את ההרשאה Google Analytics. אפשר להפעיל את Google Analytics במסוף Firebase, בכרטיסייה
חשוב לזכור שהדיווח על הרבה מהנתונים הסטטיסטיים בדף הזה עשוי להתעכב עד 24 שעות בגלל אצווה של נתוני ניתוח.
דוחות מסירת הודעות
במסוף Firebase, נכנסים לכרטיסייה DevOps & Engagement (DevOps והתעניינות) > Messaging (העברת הודעות) > Reports (דוחות) כדי לראות את הנתונים הבאים לגבי הודעות שנשלחו לערכות ה-SDK של FCM בפלטפורמות של Android או Apple, כולל הודעות שנשלחו באמצעות הכלי "ניסוח מסרים" וממשקי ה-API של FCM:
- שליחות – הודעת הנתונים או הודעת ההתראה הוכנסה לתור למסירה, או הועברה בהצלחה לשירות של צד שלישי כמו APNs למסירה. שימו לב: יכול להיות עיכוב של כמה שעות בנתונים הסטטיסטיים של השליחות. למידע נוסף, קראו את המאמר משך החיים של הודעה.
- התקבלה (זמינה רק במכשירי Android) – הודעת הנתונים או הודעת ההתראה התקבלה באפליקציה. הנתונים האלה זמינים כשבמכשיר Android המקבל מותקנת גרסה 18.0.1 ומעלה של FCM SDK.
- חשיפות (זמין רק להודעות התראה במכשירי Android) – התראת התצוגה הוצגה במכשיר כשהאפליקציה פועלת ברקע.
- פתיחות – המשתמש פתח את הודעת ההתראה. האירוע מדווח רק לגבי התראות שמתקבלות כשהאפליקציה פועלת ברקע.
הנתונים האלה זמינים לכל ההודעות עם מטען ייעודי (payload) של התראות ולכל הודעות הנתונים המתויגות. איך מוסיפים תוויות ניתוח נתונים להודעות
כשאתם צופים בדוחות על סמסים, אתם יכולים להגדיר טווח תאריכים לנתונים שמוצגים, ולייצא אותם לקובץ CSV. אפשר גם לסנן לפי הקריטריונים הבאים:
- פלטפורמה (iOS או Android)
- אפליקציה
- תוויות ניתוח נתונים בהתאמה אישית
הוספת תוויות של Analytics להודעות
הוספת תוויות להודעות היא פעולה שימושית מאוד לניתוח בהתאמה אישית, שמאפשרת לסנן נתונים סטטיסטיים של מסירה לפי תוויות או קבוצות של תוויות. אפשר להוסיף תווית לכל הודעה שנשלחת באמצעות HTTP v1 API על ידי הגדרת השדה fcmOptions.analyticsLabel באובייקט message, או בשדות AndroidFcmOptions או ApnsFcmOptions הספציפיים לפלטפורמה.
תוויות של Analytics הן מחרוזות טקסט בפורמט ^[a-zA-Z0-9-_.~%]{1,50}$.
התוויות יכולות לכלול אותיות קטנות וגדולות, מספרים ואת הסמלים הבאים:
-~%
האורך המקסימלי הוא 50 תווים. אפשר לציין עד 100 תוויות ייחודיות ביום. הודעות עם תוויות שנוספו מעבר למגבלה הזו לא מדווחות.
בכרטיסייה Reports של העברת ההודעות במסוף Firebase, אתם יכולים לחפש ברשימה של כל התוויות הקיימות ולהחיל אותן בנפרד או בשילוב כדי לסנן את הנתונים הסטטיסטיים שמוצגים.
נתוני מסירה נצברים באמצעות FCM Data API
באמצעות Firebase Cloud Messaging Data API אתם יכולים לאחזר מידע שיעזור לכם להבין את התוצאות של בקשות להעברת הודעות שמטורגטות לאפליקציות ל-Android. ה-API מספק נתונים נצברים מכל מכשירי Android בפרויקט שבהם מופעל איסוף נתונים. הנתונים כוללים את אחוז ההודעות שנמסרו ללא עיכוב, ואת מספר ההודעות שעוכבו או נמחקו בשכבת התעבורה של 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 מספקים מידע על התוצאות של בקשות להודעות. כל הקטגוריות הן ייחודיות. הוא יכול לענות על שאלות כמו "האם ההודעות שלי נמסרות?" ו "מה גורם להודעות להימחק?".
לדוגמה, ערך גבוה בשדה droppedTooManyPendingMessages יכול להצביע על כך שמופעי האפליקציה מקבלים כמויות של הודעות שלא ניתנות לכיווץ שחורגות מהמגבלה של FCM, שהיא 100 הודעות בהמתנה.
כדי למנוע את זה, ודאו שהאפליקציה מטפלת בקריאות ל-onDeletedMessages, ושקלו לשלוח הודעות שניתן לכווץ. באופן דומה, אחוזים גבוהים של droppedDeviceInactive יכולים להיות סימן לכך שצריך לעדכן את אסימוני הרישום בשרת, להסיר אסימונים לא עדכניים ולבטל את ההרשמה שלהם לנושאים. במאמר ניהול אסימוני רישום של FCM מפורטות השיטות המומלצות בתחום הזה.
אחוזי ביצועי המסירה
השדות באובייקט DeliveryPerformancePercents מספקים מידע על הודעות שנמסרו בהצלחה. הוא יכול לענות על שאלות כמו "האם ההודעות שלי התעכבו?" ו"למה ההודעות מתעכבות?". לדוגמה, ערך גבוה של delayedMessageThrottled מציין בבירור שאתם חורגים מהמגבלות המקסימליות לכל מכשיר, ושאתם צריכים לשנות את קצב שליחת ההודעות.
אחוזי התובנות לגבי הודעות
האובייקט הזה מספק מידע נוסף על כל ההודעות שנשלחו. השדה priorityLowered מבטא את אחוז ההודעות שהתקבלו, שהעדיפות שלהן ירדה מ-HIGH ל-NORMAL. אם הערך הזה גבוה, נסו לשלוח פחות הודעות בעדיפות גבוהה או ודאו שאתם תמיד מציגים התראה כשנשלחת הודעה בעדיפות גבוהה. מידע נוסף על עדיפות ההודעות
מה ההבדל בין הנתונים האלה לבין הנתונים שמיוצאים ל-BigQuery?
הייצוא ל-BigQuery מספק יומני הודעות ספציפיות לגבי קבלת ההודעות על ידי הקצה העורפי של FCM ומסירת ההודעות ב-SDK במכשיר (שלבים 2 ו-4 בארכיטקטורת FCM). הנתונים האלה שימושיים כדי לוודא שהודעות ספציפיות התקבלו ונמסרו. בקטע הבא תוכלו לקרוא מידע נוסף על ייצוא נתונים ל-BigQuery.
לעומת זאת, Firebase Cloud Messaging Data API מספק פרטים נצברים על מה שקורה ספציפית בשכבת התעבורה של Android (או בשלב 3 של ארכיטקטורת FCM). הנתונים האלה מספקים תובנות ספציפיות לגבי מסירת הודעות מהקצה העורפי של FCM אל Android SDK. הוא שימושי במיוחד כדי להציג מגמות שקשורות לסיבות לעיכוב או לדחייה של הודעות במהלך ההעברה הזו.
במקרים מסוימים, יכול להיות ששתי קבוצות הנתונים לא יהיו זהות לחלוטין מהסיבות הבאות:
- המדדים המצטברים דוגמים רק חלק מכל ההודעות
- המדדים המצטברים מעוגלים
- אנחנו לא מציגים מדדים מתחת לסף הפרטיות
- חלק מהתוצאות של ההודעות חסרות בגלל אופטימיזציות באופן שבו אנחנו מנהלים את הנפח הגדול של התנועה.
מגבלות ה-API
צירי זמן של נתונים נצברים
ה-API יחזיר נתונים היסטוריים של 7 ימים, אבל הנתונים שיוחזרו על ידי ה-API הזה יתעכבו עד 5 ימים. לדוגמה, ב-20 בינואר, הנתונים של התאריכים 9 עד 15 בינואר יהיו זמינים, אבל לא הנתונים של 16 בינואר ואילך. בנוסף, הנתונים מסופקים כמיטב יכולתנו. במקרה של הפסקה באיסוף הנתונים, FCM יפעל כדי לתקן את הבעיה ולא ימלא את הנתונים החסרים אחרי שהבעיה תתוקן. בהפסקות ארוכות יותר, יכול להיות שהנתונים לא יהיו זמינים במשך שבוע או יותר.
כיסוי נתונים
המדדים שמתקבלים מ-Firebase Cloud Messaging Data API נועדו לספק תובנות לגבי מגמות רחבות של מסירת הודעות. עם זאת, הם לא מספקים כיסוי של 100% לכל התרחישים של ההודעות. התרחישים הבאים הם תוצאות ידועות שלא משתקפות במדדים.
הודעות שפג תוקפן
אם אורך החיים (TTL) פג אחרי סוף תאריך היומן הנתון, ההודעה לא תיספר כ-droppedTtlExpired בתאריך הזה.
הודעות למכשירים לא פעילים
יכול להיות שהודעות שנשלחות למכשירים לא פעילים יופיעו במערך הנתונים, ויכול להיות שלא, בהתאם לנתיב הנתונים שהן עוברות בו. זה יכול לגרום לספירה שגויה בשדות droppedDeviceInactive ו-pending.
הודעות למכשירים עם העדפות משתמש מסוימות
בהתאם להעדפות של המשתמשים, אם הם השביתו את האיסוף של דפוסי שימוש וביצועים במכשירים שלהם, ההודעות שלהם לא ייכללו בספירה שלנו.
עיגול ומינימום
מערכת FCM מעגלת בכוונה את הספירות ומוציאה אותן מהדוח אם הנפחים לא גדולים מספיק.
ייצוא נתונים ל-BigQuery
אתם יכולים לייצא את נתוני ההודעות אל BigQuery כדי לנתח אותם לעומק. ב-BigQuery אתם יכולים לנתח את הנתונים באמצעות BigQuery SQL, לייצא אותם לספק שירותי ענן אחר או להשתמש בהם במודלים של למידת מכונה בהתאמה אישית. הייצוא ל-BigQuery כולל את כל הנתונים הזמינים של ההודעות, בלי קשר לסוג ההודעה או אם ההודעה נשלחה באמצעות ה-API או באמצעות הכלי ליצירת התראות.
אם ההודעות נשלחות למכשירים שמותקנות בהם גרסאות ה-SDK המינימליות הבאות של FCM, יש לכם אפשרות נוספת להפעיל את הייצוא של נתוני מסירת ההודעות באפליקציה:
- Android מגרסה 20.1.0 ואילך.
- iOS מגרסה 8.6.0 ואילך
- Firebase Web SDK מגרסה 12.14.0 ואילך
כדי להתחיל, מקשרים את הפרויקט ל-BigQuery באמצעות מסוף Firebase:
בחר אחת מהאפשרויות הבאות:
עוברים אל DevOps & Engagement (DevOps ומעורבות) > Messaging (העברת הודעות) > the Notifications composer (הכלי ליצירת התראות), ואז לוחצים על Access BigQuery (גישה ל-BigQuery) בתחתית הדף.
עוברים אל
הגדרות > הכרטיסייה שילובים. ואז לוחצים על קישור ב-BigQuery.בדף הזה מוצגות אפשרויות הייצוא של FCM לכל האפליקציות בפרויקט שמופעל בהן FCM.
פועלים לפי ההוראות במסך כדי להפעיל את BigQuery.
מידע נוסף זמין במאמר קישור בין Firebase ל-BigQuery.
כשמפעילים את הייצוא של BigQuery עבור Cloud Messaging:
מערכת Firebase מייצאת את הנתונים אל BigQuery. שימו לב שההפצה הראשונית של הנתונים לייצוא יכולה להימשך עד 48 שעות.
- אתם יכולים לתזמן באופן ידני השלמת חוסר בנתונים עד 30 ימים אחורה.
אי אפשר לשנות את המיקום אחרי שיוצרים את קבוצת הנתונים, אבל אפשר להעתיק את קבוצת הנתונים למיקום אחר או להעביר ידנית את קבוצת הנתונים למיקום אחר (ליצור אותה מחדש). למידע נוסף, קראו את המאמר שינוי המיקום של מערך הנתונים.
מערכת Firebase מגדירה סנכרונים קבועים של הנתונים מהפרויקט ב-Firebase אל BigQuery. פעולות הייצוא היומיות האלה מתחילות בשעה 4:00 לפי שעון החוף המערבי בארה"ב, ובדרך כלל מסתיימות תוך 24 שעות.
כברירת מחדל, כל האפליקציות בפרויקט מקושרות אל BigQuery וכל האפליקציות שתוסיפו לפרויקט במועד מאוחר יותר יקושרו באופן אוטומטי אל BigQuery. אתם יכולים לקבוע אילו אפליקציות ישלחו נתונים.
כדי להשבית את הייצוא של BigQuery, צריך לבטל את הקישור של הפרויקט במסוף Firebase.
הפעלת ייצוא של נתוני מסירת הודעות
iOS+
במכשירי iOS עם גרסה 8.6.0 ומעלה של ה-SDK של FCM, אפשר להפעיל את ייצוא הנתונים של מסירת ההודעות באפליקציה. ב-FCM אפשר לייצא נתונים גם של התראות וגם של התראות ברקע. ייצוא הנתונים מושבת כברירת מחדל ברמת האפליקציה. הפעלה פרוגרמטית של התכונה ברמת המכונה של האפליקציה מאפשרת לבקש ממשתמשי הקצה הרשאה לנתח את נתוני מסירת ההודעות שלהם (מומלץ). אם שניהם מוגדרים, הערך ברמת מופע האפליקציה מבטל את הערך ברמת האפליקציה.
לפני שמפעילים את האפשרויות האלה, צריך ליצור את הקישור של FCM ל-BigQuery בפרויקט, כמו שמתואר במאמר ייצוא נתונים ל-BigQuery.
הפעלת ייצוא של נתוני מסירה להתראות
רק התראות יכולות להפעיל תוספים של אפליקציות לשירותי התראות. לכן, כדי להפעיל מעקב אחרי הודעות שמוצגות, צריך להוסיף לאפליקציה תוסף לשירות התראות ולקרוא ל-API הזה בתוך תוסף השירות. מידע נוסף זמין במסמכי התיעוד של 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.serviceExtension().exportDeliveryMetrics(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` באובייקט המטען הייעודי (payload).
הפעלת ייצוא של נתוני מסירה להתראות ברקע
להודעות ברקע שמתקבלות כשהאפליקציה פועלת בחזית או ברקע, אפשר לקרוא ל-API לייצוא נתונים בתוך ה-handler של הודעות הנתונים של האפליקציה הראשית. צריך לבצע את הקריאה הזו לכל התראה שמתקבלת:
Swift
// For background notifications, call the API inside the // UIApplicationDelegate or NSApplicationDelegate method: func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) { Messaging.serviceExtension().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
Android
במכשירי Android עם גרסה 20.1.0 ומעלה של ה-SDK של FCM, אפשר להפעיל את הייצוא של נתוני מסירת ההודעות באפליקציה. כברירת מחדל, ייצוא הנתונים מושבת ברמת האפליקציה. הפעלה פרוגרמטית של התכונה ברמת המכונה של האפליקציה מאפשרת לכם לבקש ממשתמשי הקצה הרשאה לנתח את נתוני מסירת ההודעות שלהם (מומלץ). אם שניהם מוגדרים, הערך ברמת מופע האפליקציה מבטל את הערך ברמת האפליקציה.
לפני שמפעילים את האפשרויות האלה, צריך ליצור את הקישור של FCM ל-BigQuery בפרויקט, כמו שמתואר במאמר ייצוא נתונים ל-BigQuery.
הפעלת ייצוא של נתוני מסירה למופעי אפליקציה
ברוב המקרים, מומלץ להפעיל את ייצוא נתוני מסירת ההודעות רק ברמת המופע של האפליקציה, ולהשאיר אותו מושבת ברמת האפליקציה.
FirebaseMessaging.getInstance().setDeliveryMetricsExportToBigQuery(true);
הפעלת ייצוא של נתוני מסירה לאפליקציה
אם אתם מעדיפים להפעיל את הייצוא ברמת האפליקציה, הקפידו לא להפעיל את ה-method setDeliveryMetricsExportToBigQuery, והוסיפו את המאפיין הבא לאובייקט האפליקציה בקובץ המניפסט של האפליקציה:
<application> <meta-data android:name="delivery_metrics_exported_to_big_query_enabled" android:value="true" /> </application>
אינטרנט
גרסה 12.14.0 ומעלה של FCM SDK לאינטרנט מאפשרת לייצא נתוני מסירה. כברירת מחדל, ייצוא הנתונים מושבת ברמת האפליקציה. הפעלה פרוגרמטית של התכונה ברמת המכונה של האפליקציה מאפשרת לבקש ממשתמשי הקצה הרשאה לנתח את נתוני מסירת ההודעות שלהם (מומלץ). אם שניהם מוגדרים, הערך ברמת מופע האפליקציה מבטל את הערך ברמת האפליקציה. כשמשתמש קצה נותן הסכמה או דוחה את איסוף הנתונים, האפליקציה צריכה להגדיר את הדגל הניסיוני להפעלה או להשבתה של כל מופע של האפליקציה, כפי שמוצג:
// userConsent holds the decision of the user to give big query export consent. const userConsent = ...; const messaging = getMessagingInSw(app); experimentalSetDeliveryMetricsExportedToBigQueryEnabled(messaging, userConsent);
אילו נתונים מיוצאים ל-BigQuery?
חשוב לזכור שטירגוט של טוקנים לא עדכניים או של רישומים לא פעילים עלול לנפח חלק מהנתונים הסטטיסטיים האלה.
הסכימה של הטבלה שמיוצאת היא:
| _PARTITIONTIME | TIMESTAMP | העמודה המדומה הזו מכילה חותמת זמן של תחילת היום (ב-UTC) שבו הנתונים נטענו. במחיצה YYYYMMDD, עמודת הדמה הזו מכילה את הערך TIMESTAMP('YYYY-MM-DD'). |
| event_timestamp | TIMESTAMP | חותמת הזמן של האירוע כפי שתועדה על ידי השרת |
| project_number | מספר שלם | מספר הפרויקט מזהה את הפרויקט שממנו נשלחה ההודעה |
| message_id | מחרוזת | מזהה ההודעה מזהה את ההודעה. מזהה ההודעה נוצר ממזהה האפליקציה ומחותמת הזמן, ובמקרים מסוימים הוא לא יהיה ייחודי גלובלית. |
| instance_id | מחרוזת | המזהה הייחודי של האפליקציה שאליה נשלחת ההודעה (אם הוא זמין). זה יכול להיות מזהה מופע או מזהה התקנה של Firebase. |
| message_type | מחרוזת | סוג ההודעה. יכולה להיות הודעת התראה או הודעת נתונים. הנושא משמש לזיהוי ההודעה המקורית של נושא או קמפיין שנשלח. ההודעות הבאות הן התראה או הודעת נתונים. |
| sdk_platform | מחרוזת | הפלטפורמה של האפליקציה המקבלת |
| שם_האפליקציה | מחרוזת | שם החבילה של אפליקציות ל-Android או מזהה החבילה של אפליקציות ל-iOS |
| collapse_key | מחרוזת | מפתח הכיווץ מזהה קבוצה של הודעות שאפשר לכווץ. כשהמכשיר לא מחובר, רק ההודעה האחרונה עם מפתח כיווץ נתון נכנסת לתור למסירה בסופו של דבר. |
| הרשמה בעדיפות | מספר שלם | עדיפות ההודעה. 5 היא עדיפות "רגילה" ו-10 היא עדיפות "גבוהה". |
| ttl | מספר שלם | הפרמטר הזה מציין כמה זמן (בשניות) ההודעה צריכה להישמר באחסון של FCM אם המכשיר במצב אופליין. |
| נושא | מחרוזת | שם הנושא שאליו נשלחה הודעה (אם רלוונטי) |
| bulk_id | מספר שלם | המזהה של קבוצת ההודעות מזהה קבוצה של הודעות קשורות, כמו הודעות שנשלחו לנושא מסוים. |
| אירוע | מחרוזת | סוג האירוע.
הערכים האפשריים הם:
|
| analytics_label | מחרוזת | ב-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 היא השעה שבה מתקבלת הבקשה המקורית, ושעת הסיום היא השעה שבה נוצרת ההודעה האחרונה שמטרגטת מכשיר אחד.
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;