मैसेज डिलीवरी के बारे में जानकारी

FCM आपको तीन तरह के टूल उपलब्ध कराता है, ताकि आपको मैसेज डिलीवरी के बारे में अहम जानकारी मिल सके:

  • Firebase कंसोल मैसेज डिलीवरी रिपोर्ट
  • Firebase Cloud Messaging Data API से इकट्ठा की गई Android SDK की डिलीवरी मेट्रिक
  • Google BigQuery में डेटा एक्सपोर्ट करने की सुविधा

इस पेज में बताए गए रिपोर्टिंग टूल को काम करने के लिए Google Analytics की ज़रूरत होती है. अगर आपके प्रोजेक्ट के लिए Google Analytics चालू नहीं है, तो इसे अपने Firebase प्रोजेक्ट की सेटिंग के इंटिग्रेशन टैब में सेट अप किया जा सकता है.

ध्यान रखें कि इस पेज पर मौजूद कई आंकड़ों की रिपोर्टिंग में, 24 घंटे तक की देरी हो सकती है. ऐसा, आंकड़ों के बैच को इकट्ठा करने की वजह से होता है.

मैसेज डिलीवरी की रिपोर्ट

Firebase कंसोल में रिपोर्ट टैब में, Android या Apple प्लैटफ़ॉर्म FCM SDK को भेजे गए मैसेज का नीचे दिया गया डेटा देखा जा सकता है. इसमें नोटिफ़िकेशन कंपोज़र और FCM API (एपीआई) के ज़रिए भेजे गए मैसेज भी शामिल हैं:

  • भेजता है — डेटा मैसेज या सूचना वाले मैसेज को डिलीवरी के लिए लाइन में रखा गया है या उसे डिलीवरी के लिए एपीएन जैसी तीसरे पक्ष की सेवा को भेज दिया गया है. ज़्यादा जानकारी के लिए, मैसेज का लाइफ़टाइम देखें.
  • मिला (सिर्फ़ Android डिवाइस पर उपलब्ध) — ऐप्लिकेशन को डेटा मैसेज या सूचना वाला मैसेज मिला है. यह डेटा तब उपलब्ध होता है, जब पाने वाले Android डिवाइस पर FCM SDK 18.0.1 या उसके बाद का वर्शन इंस्टॉल हो.
  • इंप्रेशन (केवल Android डिवाइस पर नोटिफ़िकेशन संदेशों के लिए उपलब्ध) — ऐप्लिकेशन के पृष्ठभूमि में होने पर डिवाइस पर प्रदर्शन नोटिफ़िकेशन दिखाया जाता है.
  • खुलता है — उपयोगकर्ता ने सूचना वाला मैसेज खोला है. ऐप्लिकेशन के बैकग्राउंड में चलने पर ही मिलने वाली सूचनाओं के लिए रिपोर्ट की जाती है.

यह डेटा, सूचना पेलोड वाले सभी मैसेज और लेबल किए गए डेटा मैसेज के लिए उपलब्ध है. लेबल के बारे में ज़्यादा जानने के लिए, मैसेज में आंकड़े लेबल जोड़ना लेख पढ़ें.

मैसेज की रिपोर्ट देखते समय, रिपोर्ट को CSV फ़ॉर्मैट में एक्सपोर्ट करने के विकल्प के साथ, तारीख की सीमा सेट की जा सकती है. इन शर्तों के हिसाब से भी फ़िल्टर किया जा सकता है:

  • प्लैटफ़ॉर्म (iOS या Android)
  • ऐप्लिकेशन
  • कस्टम ऐनलिटिक्स लेबल

मैसेज में आंकड़ों के लेबल जोड़ना

मैसेज को लेबल करना, कस्टम विश्लेषण के लिए बहुत काम का होता है. इसकी मदद से, डिलीवरी के आंकड़ों को लेबल या लेबल के सेट के हिसाब से फ़िल्टर किया जा सकता है. एचटीटीपी v1 एपीआई के ज़रिए भेजे गए किसी भी मैसेज पर लेबल जोड़ा जा सकता है. इसके लिए, मैसेज ऑब्जेक्ट या प्लैटफ़ॉर्म के हिसाब से AndroidFcmOptions या ApnsFcmOptions फ़ील्ड में fcmOptions.analyticsLabel फ़ील्ड को सेट करें.

Analytics लेबल, ^[a-zA-Z0-9-_.~%]{1,50}$ फ़ॉर्मैट में मौजूद टेक्स्ट स्ट्रिंग होते हैं. लेबल में लोअर और अपर केस वर्ण, संख्याएं और निम्न प्रतीक शामिल हो सकते हैं:

  • -
  • ~
  • %

इसमें 50 से ज़्यादा वर्ण नहीं हो सकते. हर दिन ज़्यादा से ज़्यादा 100 यूनीक लेबल जोड़े जा सकते हैं. तय सीमा से ज़्यादा लेबल वाले मैसेज को रिपोर्ट नहीं किया जाता.

Firebase कंसोल की मैसेज सेवा के रिपोर्ट टैब में, सभी मौजूदा लेबल की सूची खोजी जा सकती है. साथ ही, दिखाए गए आंकड़ों को फ़िल्टर करने के लिए, उन्हें एक-एक करके या कॉम्बिनेशन में लागू किया जा सकता है.

FCM Data API के ज़रिए इकट्ठा किया गया डिलीवरी डेटा

'Firebase क्लाउड से मैसेज करने का डेटा एपीआई' आपको जानकारी वापस पाने की सुविधा देता है. इससे Android ऐप्लिकेशन को टारगेट करने वाले मैसेज के अनुरोधों के नतीजों को समझने में मदद मिलती है. यह एपीआई किसी प्रोजेक्ट में, डेटा इकट्ठा करने की सुविधा वाले सभी Android डिवाइसों का एग्रीगेट किया गया डेटा उपलब्ध कराता है. इसमें बिना देरी के डिलीवर किए गए मैसेज का प्रतिशत और Android ट्रांसपोर्ट लेयर में कितने मैसेज देरी से डिलीवर हुए या डिलीवर नहीं हुए, इसका ब्यौरा भी शामिल है. इस डेटा का आकलन करने से मैसेज डिलीवरी के बड़े रुझानों का पता चल सकता है. साथ ही, इससे आपको ईमेल भेजने के अनुरोधों की परफ़ॉर्मेंस को बेहतर बनाने के असरदार तरीके खोजने में मदद मिल सकती है. रिपोर्ट में, तारीख की सीमा की उपलब्धता के बारे में जानकारी पाने के लिए, एग्रीगेट डेटा टाइमलाइन देखें.

एपीआई, किसी ऐप्लिकेशन के लिए उपलब्ध पूरा डेटा उपलब्ध कराता है. एपीआई के बारे में जानकारी देने वाले दस्तावेज़ देखें.

डेटा कैसे बांटा जाता है?

डिलीवरी की जानकारी को ऐप्लिकेशन, तारीख, और आंकड़ों के लेबल के हिसाब से बांटा जाता है. एपीआई को कॉल करने पर, तारीख, ऐप्लिकेशन, और आंकड़े के लेबल के हर कॉम्बिनेशन का डेटा दिखेगा. उदाहरण के लिए, androidDeliveryData JSON ऑब्जेक्ट ऐसा दिखेगा:

 {
  "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 Export में, FCM बैकएंड की मदद से मैसेज स्वीकार किए जाने और डिवाइस पर SDK टूल में मैसेज डिलीवरी के बारे में अलग-अलग मैसेज लॉग मिलते हैं (FCM आर्किटेक्चर के दूसरे और चौथे चरण). इस डेटा की मदद से, यह पक्का किया जा सकता है कि अलग-अलग मैसेज स्वीकार किए जाएं और डिलीवर किए गए हों. अगले सेक्शन में BigQuery डेटा एक्सपोर्ट के बारे में ज़्यादा पढ़ें.

इसके उलट, Firebase Cloud Messaging Data API, इस बारे में पूरी जानकारी देता है कि खास तौर पर Android ट्रांसपोर्ट लेयर (या FCM आर्किटेक्चर का तीसरा चरण) में क्या होता है. इस डेटा से खास तौर पर, FCM बैकएंड से Android SDK पर मैसेज डिलीवर करने से जुड़ी अहम जानकारी मिलती है. यह खास तौर पर उन रुझानों को दिखाने के लिए मददगार होता है जिनसे पता चलता है कि इस ट्रांसपोर्ट के दौरान मैसेज में देरी क्यों हुई या क्यों नहीं हुई.

कुछ मामलों में, हो सकता है कि नीचे दी गई वजहों से ये दोनों डेटा सेट सटीक रूप से मेल न खाएं:

  • एग्रीगेट की गई मेट्रिक में सभी मैसेज के सिर्फ़ कुछ हिस्से का सैंपल दिया जाता है
  • एग्रीगेट की गई मेट्रिक को राउंड ऑफ़ किया जाता है
  • हम ऐसी मेट्रिक को निजता थ्रेशोल्ड से कम नहीं करते
  • मैसेज के कुछ नतीजों का कुछ हिस्सा मौजूद नहीं है. इसकी वजह यह है कि हम बड़ी संख्या में ट्रैफ़िक को मैनेज करने के अपने तरीके को ऑप्टिमाइज़ करते हैं.

एपीआई की सीमाएं

कुल डेटा टाइमलाइन

एपीआई, सात दिनों का पुराना डेटा दिखाएगा. हालांकि, इस एपीआई से लौटाए गए डेटा को प्रोसेस करने में पांच दिन तक की देरी होगी. उदाहरण के लिए, 20 जनवरी को 9 जनवरी से 15 जनवरी का डेटा उपलब्ध होगा, लेकिन 16 जनवरी या उसके बाद के लिए नहीं. इसके अलावा, डेटा पूरी तरह से उपलब्ध कराया जाता है. डेटा कुछ समय के लिए उपलब्ध न होने पर, FCM समस्या को ठीक करने के लिए काम करेगा और समस्या हल होने के बाद डेटा को बैकफ़िल नहीं करेगा. हो सकता है कि बार-बार होने वाली रुकावटों के दौरान, डेटा एक हफ़्ते या उससे ज़्यादा समय तक उपलब्ध न हो.

डेटा कवरेज

Firebase Cloud Messaging Data API से मिली मेट्रिक का मकसद, मैसेज डिलीवरी के बड़े रुझानों के बारे में अहम जानकारी देना है. हालांकि, वे मैसेज की सभी स्थितियों की 100% कवरेज नहीं देते. इन स्थितियों में, मेट्रिक में ऐसे नतीजे नहीं दिखते हैं जिनके बारे में पहले से जानकारी है.

जिन मैसेज की समयसीमा खत्म हो चुकी है

अगर लॉग की गई तारीख के बाद टाइम टू लाइव (टीटीएल) की समयसीमा खत्म हो जाती है, तो इस तारीख को मैसेज को droppedTtlExpired के तौर पर नहीं गिना जाएगा.

इनऐक्टिव डिवाइसों के लिए मैसेज

हो सकता है कि इनऐक्टिव डिवाइसों पर भेजे गए मैसेज, डेटासेट में दिखें या नहीं, यह इस बात पर निर्भर करता है कि वे कौनसा डेटा पाथ चुनते हैं. इस वजह से, droppedDeviceInactive और pending फ़ील्ड में गिनती गलत हो सकती है.

डिवाइसों पर उपयोगकर्ता की पसंद की कुछ सेटिंग के मैसेज

जिन उपयोगकर्ताओं ने अपने डिवाइस पर इस्तेमाल और गड़बड़ी की जानकारी इकट्ठा करने की सुविधा बंद कर दी है, उनकी प्राथमिकताओं को ध्यान में रखते हुए, उनके मैसेज हमारी गिनती में शामिल नहीं होंगे.

दशमलव वाली संख्या और कम से कम वैल्यू

FCM जान-बूझकर राउंड ऑफ़ करता है और उन संख्याओं को शामिल नहीं करता है जहां वॉल्यूम की मात्रा ज़रूरत के मुताबिक नहीं होती.

BigQuery का डेटा एक्सपोर्ट करना

ज़्यादा विश्लेषण के लिए, मैसेज डेटा को BigQuery में एक्सपोर्ट किया जा सकता है. BigQuery की मदद से, BigQuery एसक्यूएल का इस्तेमाल करके डेटा का विश्लेषण किया जा सकता है, इसे किसी दूसरे क्लाउड प्रोवाइडर पर एक्सपोर्ट किया जा सकता है या अपने कस्टम एमएल मॉडल के लिए डेटा का इस्तेमाल किया जा सकता है. BigQuery में एक्सपोर्ट में, मैसेज के लिए उपलब्ध सारा डेटा शामिल होता है. इस बात से कोई फ़र्क़ नहीं पड़ता कि मैसेज किस तरह का है या उसे एपीआई या सूचना लिखने वाले टूल से भेजा गया है या नहीं.

FCM SDK के नीचे दिए गए कम से कम वर्शन वाले डिवाइस पर भेजे गए मैसेज के लिए, आपके पास अपने ऐप्लिकेशन के मैसेज डिलीवरी डेटा को एक्सपोर्ट करने की सुविधा चालू करने का एक और विकल्प है:

  • Android 20.1.0 या इसके बाद वाला वर्शन होना चाहिए.
  • iOS 8.6.0 या इसके बाद वाला वर्शन
  • Firebase वेब SDK टूल 9.0.0 या इसके बाद का वर्शन

Android और iOS के लिए, डेटा एक्सपोर्ट करने की सुविधा चालू करने की जानकारी नीचे देखें.

शुरू करने के लिए, अपने प्रोजेक्ट को BigQuery से लिंक करें:

  1. नीचे से कोई एक विकल्प चुनें:

    • सूचनाएं कंपोज़र खोलें. इसके बाद, पेज में सबसे नीचे मौजूद BigQuery ऐक्सेस करें पर क्लिक करें.

    • Firebase कंसोल में, इंटिग्रेशन पेज पर जाकर, BigQuery कार्ड में लिंक करें पर क्लिक करें.

      इस पेज पर, प्रोजेक्ट में FCM की सुविधा वाले सभी ऐप्लिकेशन के लिए, FCM एक्सपोर्ट करने के विकल्प दिखाए गए हैं.

  2. BigQuery को चालू करने के लिए, स्क्रीन पर दिए गए निर्देशों का पालन करें.

ज़्यादा जानकारी के लिए, Firebase को BigQuery से लिंक करना लेख पढ़ें.

जब क्लाउड से मैसेज के लिए BigQuery Export चालू किया जाता है, तो:

  • Firebase आपके डेटा को BigQuery में एक्सपोर्ट करता है. ध्यान दें कि एक्सपोर्ट के लिए डेटा को प्रोसेस करने की शुरुआत में 48 घंटे लग सकते हैं.

  • डेटासेट बनाने के बाद, उसकी जगह को बदला नहीं जा सकता. हालांकि, डेटासेट को किसी दूसरी जगह पर कॉपी किया जा सकता है या मैन्युअल तरीके से डेटासेट को किसी दूसरी जगह पर ले जाया (फिर से बनाया) जा सकता है. ज़्यादा जानने के लिए, डेटासेट की जगह बदलना लेख पढ़ें.

  • Firebase, आपके डेटा को Firebase प्रोजेक्ट से BigQuery में नियमित तौर पर सिंक करता है. ये रोज़ होने वाले एक्सपोर्ट की कार्रवाइयां, पैसिफ़िक समय के हिसाब से सुबह 4:00 बजे से शुरू होती हैं और आम तौर पर 24 घंटे में खत्म हो जाती हैं.

  • आपके प्रोजेक्ट के सभी ऐप्लिकेशन डिफ़ॉल्ट रूप से, BigQuery से लिंक होते हैं. साथ ही, बाद में प्रोजेक्ट में जोड़े जाने वाले ऐप्लिकेशन, BigQuery से अपने-आप लिंक हो जाते हैं. आपके पास BigQuery में डेटा भेजने वाले ऐप्लिकेशन चुनने का विकल्प होता है.

BigQuery Export को बंद करने के लिए, Firebase कंसोल में अपना प्रोजेक्ट अनलिंक करें.

मैसेज डिलीवरी का डेटा एक्सपोर्ट करने की सुविधा चालू करें

FCM SDK 8.6.0 या उसके बाद के वर्शन वाले iOS डिवाइस अपने ऐप्लिकेशन के मैसेज डिलीवरी डेटा को एक्सपोर्ट करने की सुविधा चालू कर सकते हैं. FCM सूचना और बैकग्राउंड की सूचनाओं, दोनों के लिए डेटा एक्सपोर्ट करने की सुविधा देता है. इन विकल्पों को चालू करने से पहले, आपको BigQuery डेटा एक्सपोर्ट में बताए गए तरीके से अपने प्रोजेक्ट के लिए FCM-BiqQuery लिंक बनाना होगा.

सूचना की सूचनाओं के लिए, डिलीवरी से जुड़ा डेटा एक्सपोर्ट करने की सुविधा चालू करें

सिर्फ़ सूचना वाली सूचनाएं ही सूचना सेवा ऐप्लिकेशन एक्सटेंशन ट्रिगर कर सकती हैं. इसलिए, डिसप्ले मैसेज ट्रैकिंग चालू करने के लिए आपको अपने ऐप्लिकेशन में सूचना सेवा एक्सटेंशन जोड़ना होगा. साथ ही, इस एपीआई को सेवा एक्सटेंशन में कॉल करना होगा. नए डिलीवर की गई सूचनाओं में कॉन्टेंट में बदलाव करना पर, 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

अगर आपको एचटीटीपी v1 एपीआई का इस्तेमाल करके, ईमेल भेजने के अनुरोध बनाने हैं, तो पेलोड ऑब्जेक्ट में mutable-content = 1 के बारे में बताना न भूलें.

बैकग्राउंड में मिलने वाली सूचनाओं के लिए, डिलीवरी से जुड़ा डेटा एक्सपोर्ट करने की सुविधा चालू करें

ऐप्लिकेशन के फ़ोरग्राउंड में या बैकग्राउंड में होने पर बैकग्राउंड में मैसेज पाने के लिए, मुख्य ऐप्लिकेशन के डेटा मैसेज हैंडलर में Data Export 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 में कौनसा डेटा एक्सपोर्ट किया जाता है?

ध्यान दें कि पुराने टोकन या बंद रजिस्ट्रेशन को टारगेट करने से, इनमें से कुछ आंकड़े बढ़ सकते हैं.

एक्सपोर्ट की गई टेबल का स्कीमा यह है:

_हिस्सा का समय टाइमस्टैंप बदली हुई पहचान वाले कॉलम में, दिन की शुरुआत का टाइमस्टैंप (यूटीसी में) होता है, जिसमें डेटा लोड किया गया था. YYYYMMDD पार्टीशन के लिए, इस सूडो कॉलम में TIMESTAMP('YYYY-MM-DD') वैल्यू शामिल है.
event_timestamp टाइमस्टैंप इवेंट का वह टाइमस्टैंप जो सर्वर ने रिकॉर्ड किया है
Project_number पूर्णांक प्रोजेक्ट नंबर, उस प्रोजेक्ट की पहचान करता है जिसने मैसेज भेजा है
message_id स्ट्रिंग मैसेज आईडी से मैसेज की पहचान होती है. ऐप्लिकेशन आईडी और टाइमस्टैंप से जनरेट होने वाला मैसेज आईडी, कुछ मामलों में दुनिया भर में अलग-अलग नहीं हो सकता.
इंस्टेंस_आईडी स्ट्रिंग उस ऐप्लिकेशन का यूनीक आईडी जिस पर मैसेज भेजा गया है (उपलब्ध होने पर). यह कोई इंस्टेंस आईडी या Firebase इंस्टॉलेशन आईडी हो सकता है.
मैसेज का टाइप स्ट्रिंग मैसेज किस तरह का है. यह सूचना वाले मैसेज या डेटा मैसेज हो सकता है. विषय का इस्तेमाल, किसी विषय या कैंपेन से जुड़े मूल मैसेज की पहचान करने के लिए किया जाता है. इसके बाद के मैसेज, सूचना या डेटा मैसेज होते हैं.
SDK_प्लैटफ़ॉर्म स्ट्रिंग मैसेज पाने वाले ऐप्लिकेशन का प्लैटफ़ॉर्म
app_name स्ट्रिंग Android ऐप्लिकेशन के पैकेज का नाम या iOS ऐप्लिकेशन के बंडल आईडी
छोटा करने की कुंजी स्ट्रिंग 'छोटा करें' बटन, मैसेज के उस ग्रुप की पहचान करता है जिसे छोटा किया जा सकता है. जब कोई डिवाइस कनेक्ट नहीं होता है, तो संक्षिप्त करें कुंजी वाला केवल अंतिम संदेश ही वितरण के लिए पंक्तिबद्ध होता है
प्राथमिकता पूर्णांक मैसेज की प्राथमिकता. मान्य वैल्यू "सामान्य" और "ज़्यादा" हैं. iOS पर, ये एपीएन की प्राथमिकताओं 5 और 10 पर निर्भर करते हैं
टीटीएल पूर्णांक यह पैरामीटर तय करता है कि डिवाइस ऑफ़लाइन होने पर मैसेज को कितनी देर (सेकंड में) FCM स्टोरेज में रखा जाना चाहिए
topic स्ट्रिंग उस विषय का नाम जिस पर मैसेज भेजा गया था (लागू होने पर)
बल्क_आईडी पूर्णांक बल्क आईडी, संबंधित मैसेज के एक ग्रुप की पहचान करता है, जैसे कि किसी विषय पर भेजा गया खास मैसेज
event स्ट्रिंग इवेंट किस तरह का है. आपको ये वैल्यू दिख सकती हैं:
  • MESSAGE_स्वीकार किया गया: मैसेज, FCM सर्वर को मिला और अनुरोध मान्य है;
  • MESSAGE_DELIVERED: मैसेज को डिवाइस पर ऐप्लिकेशन के FCM SDK टूल पर डिलीवर कर दिया गया है. डिफ़ॉल्ट रूप से, इस फ़ील्ड को लागू नहीं किया जाता है. इस सुविधा को चालू करने के लिए, setDeliveryMetricsExportToBigQuery(boolean) में दिए गए निर्देशों का पालन करें.
  • MISSING_REGISTRATIONS: रजिस्ट्रेशन मौजूद न होने की वजह से अनुरोध अस्वीकार कर दिया गया;
  • UNAUTHORIZED_REGISTRATION: मैसेज अस्वीकार कर दिया गया था, क्योंकि भेजने वाले को रजिस्ट्रेशन में भेजने की अनुमति नहीं है;
  • MESSAGE_RECEIVED_INTERNAL_ERROR: मैसेज के अनुरोध को प्रोसेस करते समय एक अनजान गड़बड़ी हुई;
  • MISMATCH_SENDER_ID: मैसेज भेजने वाले आईडी और एंड-पॉइंट के लिए तय किए गए आईडी के मेल न खाने की वजह से, मैसेज भेजने का अनुरोध अस्वीकार कर दिया गया है;
  • QUOTA_EXCEEDED: काफ़ी कोटा न होने की वजह से, मैसेज भेजने का अनुरोध अस्वीकार कर दिया गया;
  • INVALID_REGISTRATION: गलत रजिस्ट्रेशन की वजह से मैसेज भेजने का अनुरोध अस्वीकार कर दिया गया;
  • INVALID_PACKAGE_NAME: अमान्य पैकेज नाम के कारण संदेश भेजने का अनुरोध अस्वीकार कर दिया गया;
  • INVALID_APNS_CREDENTIAL: मैसेज भेजने का अनुरोध, अमान्य APNS सर्टिफ़िकेट की वजह से अस्वीकार कर दिया गया है;
  • INVALID_डिवाइस{/1}: अमान्य पैरामीटर की वजह से मैसेज भेजने का अनुरोध अस्वीकार कर दिया गया;
  • PAYLOAD_TOO_LARGE: तय सीमा से ज़्यादा पेलोड होने की वजह से, मैसेज भेजने का अनुरोध अस्वीकार कर दिया गया;
  • AUTHENTICATION_ERROR: मैसेज भेजने का अनुरोध, पुष्टि करने में हुई गड़बड़ी की वजह से अस्वीकार कर दिया गया है (मैसेज भेजने के लिए इस्तेमाल की गई एपीआई पासकोड देखें);
  • INVALID_TTL: अमान्य TTL की वजह से मैसेज भेजने का अनुरोध अस्वीकार कर दिया गया था.
analytics_लेबल स्ट्रिंग 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>; से बदला जा सकेगा.

दिए गए विषय या कैंपेन के लिए, फ़नल के खत्म होने की अवधि का हिसाब लगाएं

फ़ैनआउट के शुरू होने का समय वह समय होता है जब मूल अनुरोध मिलता है. साथ ही, किसी एक इंस्टेंस को टारगेट करने वाला आखिरी मैसेज बनाया जाता है.

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;