لتحديد المشاكل وحلّها في حالات تعذُّر تسليم الرسائل المستمرة، استخدِم أداة حلّ مشاكل FCM واطّلِع على منشور المدوّنة هذا لفهم الأسباب المختلفة لعدم ظهور رسالتك. يمكنك أيضًا الانتقال إلى لوحة البيانات الخاصة بحالة FCM لمعرفة ما إذا كان هناك أي انقطاعات حالية في الخدمة تؤثر في FCM.
توفّر خدمة FCM أيضًا ثلاث مجموعات من الأدوات لمساعدتك في الحصول على إحصاءات حول التقييم العام لنجاح المراسلة واستراتيجيتها:
- Firebase تقرير تسليم رسائل Console
- مقاييس مجمّعة حول عرض حِزم تطوير البرامج (SDK) لنظام التشغيل Android من واجهة برمجة التطبيقات Firebase Cloud Messaging Data API
- تصدير البيانات الشاملة إلى Google BigQuery
يتطلّب كلّ من تصدير البيانات إلى BigQuery وعلامة التبويب
التقارير في وحدة تحكّم Firebase
Google Analytics لكي يعملا. يمكنك تفعيل
Google Analytics في
يُرجى العِلم أنّ إعداد تقارير العديد من الإحصاءات في هذه الصفحة قد يتأخر لمدة تصل إلى 24 ساعة بسبب تجميع بيانات الإحصاءات.
تقارير تسليم الرسائل
في وحدة تحكّم Firebase، انتقِل إلى علامة التبويب DevOps & Engagement > Messaging > Reports للاطّلاع على البيانات التالية للرسائل المُرسَلة إلى حِزم تطوير البرامج (SDK) لمنصّة FCM على Android أو Apple، بما في ذلك الرسائل المُرسَلة باستخدام منشئ الإشعارات وواجهات برمجة تطبيقات FCM:
- عمليات الإرسال: تمت إضافة رسالة البيانات أو رسالة الإشعار إلى قائمة الانتظار للتسليم أو تم تمريرها بنجاح إلى خدمة تابعة لجهة خارجية مثل APNs للتسليم. يُرجى العِلم أنّ إحصاءات عمليات الإرسال قد تتأخر لبضع ساعات. يمكنك الاطّلاع على مدة صلاحية الرسالة لمزيد من المعلومات.
- تم الاستلام (متاح على أجهزة Android فقط): تم استلام رسالة البيانات أو رسالة الإشعار من خلال التطبيق. وتكون هذه البيانات متاحة عندما يكون جهاز Android المستلِم مثبَّتًا عليه الإصدار 18.0.1 من حزمة تطوير البرامج (SDK) لخدمة FCM أو إصدار أحدث.
- مرات الظهور (متوفّرة فقط لرسائل الإشعارات على أجهزة Android): تم عرض إشعار العرض على الجهاز أثناء تشغيل التطبيق في الخلفية.
- الرسائل المفتوحة: فتح المستخدم رسالة الإشعار. يتم تسجيلها فقط للإشعارات التي يتم تلقّيها أثناء تشغيل التطبيق في الخلفية.
تتوفّر هذه البيانات لجميع الرسائل التي تتضمّن حمولة إشعارات وجميع رسائل البيانات المصنّفة. لمزيد من المعلومات عن التصنيفات، يُرجى الاطّلاع على إضافة تصنيفات الإحصاءات إلى الرسائل.
عند عرض تقارير الرسائل، يمكنك ضبط نطاق زمني للبيانات المعروضة، مع خيار التصدير إلى ملف CSV. يمكنك أيضًا الفلترة حسب المعايير التالية:
- النظام الأساسي (iOS أو Android)
- التطبيق
- تصنيفات الإحصاءات المخصّصة
إضافة تصنيفات الإحصاءات إلى الرسائل
يُعدّ تصنيف الرسائل مفيدًا جدًا للتحليل المخصّص، ما يتيح لك فلترة إحصاءات التسليم حسب التصنيفات أو مجموعات التصنيفات. يمكنك إضافة تصنيف إلى أي رسالة يتم إرسالها باستخدام الإصدار الأول من واجهة برمجة التطبيقات HTTP من خلال ضبط الحقل fcmOptions.analyticsLabel في عنصر الرسالة أو في الحقلَين AndroidFcmOptions أو ApnsFcmOptions الخاصَين بالنظام الأساسي.
تصنيفات الإحصاءات هي سلاسل نصية بالتنسيق ^[a-zA-Z0-9-_.~%]{1,50}$.
يمكن أن تتضمّن التصنيفات أحرفًا لاتينية كبيرة وصغيرة
وأرقامًا والرموز التالية:
-~%
الحد الأقصى للطول هو 50 حرفًا. يمكنك تحديد ما يصل إلى 100 تصنيف فريد في اليوم، ولا يتم الإبلاغ عن الرسائل التي تتضمّن تصنيفات تمت إضافتها بعد تجاوز هذا الحدّ.
في علامة التبويب التقارير ضمن ميزة المراسلة في وحدة تحكّم Firebase، يمكنك البحث في قائمة بجميع التصنيفات الحالية وتطبيقها بشكل فردي أو مجمّع لفلترة الإحصاءات المعروضة.
بيانات التسليم المجمّعة باستخدام واجهة برمجة التطبيقات FCM Data API
تتيح لك واجهة Firebase Cloud Messaging Data API استرداد المعلومات التي يمكن أن تساعدك في فهم نتائج طلبات الرسائل التي تستهدف تطبيقات Android. توفّر واجهة برمجة التطبيقات بيانات مجمّعة على مستوى جميع أجهزة Android التي تم تفعيل جمع البيانات فيها في مشروع معيّن. ويشمل ذلك تفاصيل حول النسبة المئوية للرسائل التي تم تسليمها بدون تأخير، بالإضافة إلى عدد الرسائل التي تأخّر تسليمها أو تم إسقاطها ضمن طبقة النقل في Android. يمكن أن يكشف تقييم هذه البيانات عن مؤشرات عامة في تسليم الرسائل ويساعدك في العثور على طرق فعّالة لتحسين أداء طلبات الإرسال. يُرجى الاطّلاع على المخططات الزمنية للبيانات المجمّعة للحصول على معلومات عن مدى توفّر النطاق الزمني في التقارير.
توفّر واجهة برمجة التطبيقات جميع البيانات المتاحة لتطبيق معيّن. يمكنك الاطّلاع على المستندات المرجعية لواجهة برمجة التطبيقات.
كيف يتم تقسيم البيانات؟
يتم تقسيم بيانات التسليم حسب التطبيق والتاريخ وتصنيف الإحصاءات.
سيؤدي طلب البيانات من واجهة برمجة التطبيقات إلى عرض
بيانات لكل مجموعة من التاريخ والتطبيق وتصنيف الإحصاءات. على سبيل المثال، سيظهر عنصر 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.
عدد الرسائل المقبولة
العدد الوحيد المضمّن في مجموعة البيانات هو عدد الرسائل التي قبلتها خدمة "مراسلة Firebase السحابية" لتسليمها إلى أجهزة 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 إلى حزمة تطوير البرامج (SDK) لنظام التشغيل Android. وهي مفيدة بشكل خاص لعرض المؤشرات حول سبب تأخير الرسائل أو إسقاطها أثناء عملية النقل هذه.
في بعض الحالات، قد لا تتطابق مجموعتا البيانات بدقة للأسباب التالية:
- تأخذ المقاييس المجمّعة عيّنة من جزء من جميع الرسائل فقط
- يتم تقريب المقاييس المجمّعة
- لا نعرض المقاييس التي تقلّ عن حدّ الخصوصية
- لا يتوفّر جزء من نتائج الرسائل بسبب التحسينات في كيفية إدارة العدد الكبير من الزيارات.
قيود واجهة برمجة التطبيقات
المخططات الزمنية للبيانات المجمّعة
ستعرض واجهة برمجة التطبيقات بيانات سابقة لـ 7 أيام، ولكن سيتأخر عرض البيانات من خلال واجهة برمجة التطبيقات هذه لمدة تصل إلى 5 أيام. على سبيل المثال، في 20 يناير، ستكون البيانات من 9 يناير إلى 15 يناير متاحة، ولكن ليس من 16 يناير أو بعده. بالإضافة إلى ذلك، يتم توفير البيانات بأفضل جهد ممكن. في حال انقطاع البيانات، ستعمل FCM على إصلاح المشكلة ولن تعيد ملء البيانات بعد حلّ المشكلة. في حالات الانقطاع الأكبر، قد لا تكون البيانات متاحة لمدة أسبوع أو أكثر.
تغطية البيانات
تهدف المقاييس التي توفّرها واجهة برمجة التطبيقات Firebase Cloud Messaging Data API إلى تقديم إحصاءات حول المؤشرات العامة لتسليم الرسائل. ومع ذلك، لا توفّر هذه الأدوات تغطية بنسبة% 100 لجميع سيناريوهات الرسائل. السيناريوهات التالية هي نتائج معروفة لا تنعكس في المقاييس.
الرسائل منتهية الصلاحية
إذا انتهت صلاحية مدة البقاء (TTL) بعد نهاية تاريخ السجلّ المحدّد، لن يتم احتساب الرسالة على أنّها droppedTtlExpired في هذا التاريخ.
الرسائل إلى الأجهزة غير النشطة
قد تظهر أو لا تظهر الرسائل المُرسَلة إلى الأجهزة غير النشطة في مجموعة البيانات
استنادًا إلى مسار البيانات الذي تتّبعه. يمكن أن يؤدي ذلك إلى بعض الأخطاء في احتساب
الحقلَين "droppedDeviceInactive" و"pending".
الرسائل الموجَّهة إلى الأجهزة التي تتضمّن إعدادات مفضّلة معيّنة للمستخدمين
لن يتم تضمين رسائل المستخدمين الذين أوقفوا جمع معلومات الاستخدام وبيانات التشخيص على أجهزتهم في عملية الاحتساب، وذلك بما يتوافق مع إعداداتهم المفضّلة.
التقريب والحدود الدنيا
تقرّب خدمة FCM الأعداد وتستبعدها عمدًا عندما لا تكون الأحجام كبيرة بما يكفي.
تصدير بيانات BigQuery
يمكنك تصدير بيانات رسائلك إلى BigQuery لإجراء المزيد من التحليل. تتيح لك BigQuery تحليل البيانات باستخدام لغة الاستعلامات البنيوية (SQL) في BigQuery، أو تصديرها إلى مقدّم خدمات سحابة إلكترونية آخر، أو استخدامها في نماذج تعلُّم الآلة المخصّصة. يتضمّن التصدير إلى BigQuery جميع البيانات المتاحة للرسائل، بغض النظر عن نوع الرسالة أو ما إذا تم إرسالها باستخدام واجهة برمجة التطبيقات أو "منشئ الإشعارات".
بالنسبة إلى الرسائل المُرسَلة إلى الأجهزة التي تستخدم الإصدارات الدنيا التالية من حزمة تطوير البرامج (SDK) لخدمة "FCM"، يتوفّر لك خيار إضافي لتفعيل تصدير بيانات تسليم الرسائل لتطبيقك:
- الإصدار 20.1.0 من Android أو إصدار أحدث
- الإصدار 8.6.0 من نظام التشغيل iOS أو إصدار أحدث
- الإصدار 12.14.0 أو إصدار أحدث من حزمة Firebase Web SDK
للبدء، اربط مشروعك بـ "BigQuery" باستخدام وحدة تحكّم Firebase:
اختر أحد الخيارات التالية:
انتقِل إلى DevOps & Engagement (عمليات التطوير والتفاعل) > 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.
لإيقاف تصدير بيانات BigQuery، عليك إلغاء ربط مشروعك في وحدة تحكّم Firebase.
تفعيل تصدير بيانات تسليم الرسائل
iOS+
يمكن لأجهزة iOS التي تستخدم الإصدار 8.6.0 من حزمة تطوير البرامج (SDK) لخدمة "FCM" أو إصدارًا أحدث تفعيل ميزة تصدير بيانات تسليم الرسائل في التطبيق. يتيح FCM تصدير البيانات لكل من إشعارات التنبيه والإشعارات في الخلفية. يكون تصدير البيانات غير مفعَّل تلقائيًا على مستوى التطبيق. يتيح لك تفعيلها آليًا على مستوى مثيل التطبيق طلب الإذن من المستخدمين النهائيين لتحليل بيانات تسليم رسائلهم (يُنصح بذلك). وعند ضبط كليهما، تلغي القيمة على مستوى نسخة التطبيق القيمة على مستوى التطبيق.
قبل تفعيل هذه الخيارات، عليك أولاً إنشاء رابط FCM-BiqQuery لمشروعك كما هو موضّح في تصدير بيانات BigQuery.
تفعيل تصدير بيانات التسليم لإشعارات التنبيهات
بما أنّ إشعارات التنبيهات فقط هي التي يمكنها تفعيل إضافات تطبيقات خدمة الإشعارات، يجب إضافة إضافة خدمة إشعارات إلى تطبيقك واستدعاء واجهة برمجة التطبيقات هذه داخل إضافة خدمة لتفعيل تتبُّع الرسائل المعروضة. يمكنك الاطّلاع على مستندات 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
إذا كنت تنشئ طلبات إرسال باستخدام الإصدار 1 من واجهة برمجة تطبيقات HTTP، احرص على تحديد `mutable-content = 1` في عنصر الحمولة.
تفعيل تصدير بيانات التسليم للإشعارات في الخلفية
بالنسبة إلى الرسائل في الخلفية التي يتم تلقّيها عندما يكون التطبيق في المقدّمة أو الخلفية، يمكنك استدعاء واجهة برمجة التطبيقات لتصدير البيانات داخل معالج رسائل البيانات في التطبيق الرئيسي. يجب إجراء هذا الطلب لكل إشعار يتم تلقّيه:
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-BiqQuery لمشروعك كما هو موضّح في تصدير بيانات BigQuery.
تفعيل تصدير بيانات التسليم لمثيلات التطبيق
في معظم الحالات، ننصحك بتفعيل تصدير بيانات تسليم الرسائل على مستوى مثيل التطبيق فقط وتركه غير مفعَّل على مستوى التطبيق.
FirebaseMessaging.getInstance().setDeliveryMetricsExportToBigQuery(true);
تفعيل ميزة تصدير بيانات التسليم لتطبيق معيّن
إذا كنت تفضّل تفعيل ميزة التصدير على مستوى التطبيق، تأكَّد من عدم استدعاء الطريقة setDeliveryMetricsExportToBigQuery، وأضِف السمة التالية إلى عنصر التطبيق في ملف بيان تطبيقك:
<application> <meta-data android:name="delivery_metrics_exported_to_big_query_enabled" android:value="true" /> </application>
الويب
تتيح حزمة تطوير البرامج (SDK) لخدمة "FCM" للويب، الإصدار 12.14.0 أو إصدار أحدث، تصدير بيانات التسليم. يكون تصدير البيانات غير مفعَّل تلقائيًا على مستوى التطبيق. يتيح لك تفعيلها آليًا على مستوى مثيل التطبيق طلب الإذن من المستخدمين النهائيين لتحليل بيانات تسليم رسائلهم (يُنصح بذلك). وعند ضبط كليهما، تلغي القيمة على مستوى نسخة التطبيق القيمة على مستوى التطبيق. عندما يمنح المستخدم النهائي موافقته أو يرفض جمع البيانات، يجب أن يضبط التطبيق علامة التفعيل أو الإيقاف التجريبية لكل مثيل تطبيق كما هو موضّح:
// 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 | يحتوي هذا العمود الزائف على طابع زمني لبداية اليوم (بالتوقيت العالمي المنسق) الذي تم فيه تحميل البيانات. بالنسبة إلى قسم YYYYMMDD، يحتوي هذا العمود الزائف على القيمة TIMESTAMP('YYYY-MM-DD'). |
| event_timestamp | TIMESTAMP | الطابع الزمني للحدث كما سجّله الخادم |
| project_number | عدد صحيح | يحدّد رقم المشروع المشروع الذي أرسل الرسالة |
| message_id | سلسلة | يحدّد معرّف الرسالة رسالة معيّنة. يتم إنشاء معرّف الرسالة من معرّف التطبيق والطابع الزمني، وقد لا يكون فريدًا على مستوى العالم في بعض الحالات. |
| instance_id | سلسلة | المعرّف الفريد للتطبيق الذي يتم إرسال الرسالة إليه (عند توفّره) ويمكن أن يكون معرّف مثيل أو معرّف تثبيت Firebase. |
| message_type | سلسلة | نوع الرسالة يمكن أن تكون رسالة إشعار أو رسالة بيانات. يُستخدَم الموضوع لتحديد الرسالة الأصلية لموضوع أو حملة معيّنة، وتكون الرسائل اللاحقة إما إشعارًا أو رسالة بيانات. |
| sdk_platform | سلسلة | النظام الأساسي للتطبيق المستلِم |
| app_name | سلسلة | اسم الحزمة لتطبيقات Android أو معرّف الحزمة لتطبيقات iOS |
| collapse_key | سلسلة | يحدّد مفتاح التصغير مجموعة من الرسائل التي يمكن تصغيرها. عندما يكون الجهاز غير متصل، يتم وضع آخر رسالة فقط في قائمة الانتظار مع مفتاح تصغير معيّن لتسليمها في النهاية |
| الأولوية | عدد صحيح | أولوية الرسالة 5 هو الأولوية "العادية" و10 هو الأولوية "العالية". |
| ttl | عدد صحيح | تحدّد هذه المَعلمة المدة (بالثواني) التي يجب الاحتفاظ بالرسالة خلالها في مساحة تخزين FCM إذا كان الجهاز غير متصل بالإنترنت |
| موضوع | سلسلة | اسم الموضوع الذي تم إرسال رسالة إليه (عند الاقتضاء) |
| bulk_id | عدد صحيح | يحدّد رقم التعريف المجمّع مجموعة من الرسائل ذات الصلة، مثل رسالة معيّنة يتم إرسالها إلى موضوع معيّن |
| حدث | سلسلة | نوع الحدث
القيم المحتمَلة هي:
|
| analytics_label | سلسلة | باستخدام الإصدار 1 من واجهة برمجة تطبيقات HTTP، يمكن ضبط تصنيف الإحصاءات عند إرسال الرسالة، وذلك من أجل وضع علامة على الرسالة لأغراض الإحصاءات |
ما الذي يمكنك فعله بالبيانات التي تم تصديرها؟
تقدّم الأقسام التالية أمثلة على طلبات البحث التي يمكنك تنفيذها في 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>;.
احتساب مدة التوزيع لموضوع أو حملة معيّنة
وقت بدء التوزيع هو وقت تلقّي الطلب الأصلي، ووقت الانتهاء هو وقت إنشاء آخر رسالة فردية تستهدف مثيلاً واحدًا.
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;